One place for hosting & domains

      Como instalar e utilizar o Docker Compose no Ubuntu 20.04


      Introdução

      O Docker simplifica o fluxo de gerenciamento de processos de aplicações em contêineres. Embora os contêineres sejam semelhantes às máquinas virtuais em certos aspectos, eles são mais leves e fáceis de usar. Isso permite que os desenvolvedores dividam um ambiente de aplicação em vários serviços isolados.

      Para aplicações que dependem de vários serviços, orquestrar todos os contêineres para iniciar, comunicar e fechar juntos pode tornar-se algo rapidamente incontrolável. O Docker Compose é uma ferramenta que lhe permite executar ambientes de aplicações com vários contêineres com base nas definições contidas em um arquivo YAML. Ele usa as definições de serviço para compilar ambientes totalmente personalizados com contêineres múltiplos que podem compartilhar redes e volumes de dados.

      Neste guia, vamos demonstrar como instalar o Docker Compose em um servidor Ubuntu 20.04 e como começar a usar esta ferramenta.

      Pré-requisitos

      Para seguir este artigo, você irá precisar do seguinte:

      • Acesso a uma máquina local com Ubuntu 20.04, ou um servidor de desenvolvimento como um usuário não-root com privilégios sudo. Se estiver usando um servidor remoto, é recomendável ter um firewall ativo instalado. Para configurar tudo isso, consulte nosso tutorial Initial Server Setup Guide for Ubuntu 20.04.
      • O Docker instalado em seu servidor ou máquina local, seguindo os Passos 1 e 2 de How To Install and Use Docker on Ubuntu 20.04.

      Passo 1 — Instalando o Docker Compose

      Para garantir que vamos obter a versão estável mais atualizada do Docker Compose, faremos o download deste software a partir do seu repositório oficial do Github.

      Primeiro, confirme a versão mais recente disponível em sua página de releases. No momento da redação deste artigo, a versão estável mais atual é a 1.26.0.

      O comando a seguir irá baixar a release 1.26.0 e salvar o arquivo executável em /usr/local/bin/docker-compose, que tornará este software globalmente acessível como docker-compose:

      • sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

      Em seguida, defina as permissões corretas para que o comando docker-compose seja executável:

      • sudo chmod +x /usr/local/bin/docker-compose

      Para verificar se a instalação foi bem-sucedida, execute:

      Você verá um resultado parecido com este:

      Output

      docker-compose version 1.26.0, build 8a1c60f6

      O Docker Compose agora está instalado com sucesso em seu sistema. Na próxima seção, vamos ver como configurar um arquivo docker-compose.yml e obter um ambiente conteinerizado funcionando com esta ferramenta.

      Passo 2 — Configurando um arquivo docker-compose.yml

      Para demonstrar como configurar um arquivo docker-compose.yml e trabalhar com o Docker Compose, vamos criar um ambiente de servidor Web usando a imagem Nginx oficial do Docker Hub, o registro público do Docker. Este ambiente conteinerizado fornecerá um único arquivo HTML estático.

      Comece criando um novo diretório em sua pasta home e então movendo-se para ele:

      • mkdir ~/compose-demo
      • cd ~/compose-demo

      Neste diretório, configure uma pasta da aplicação para funcionar como a raiz de documentos para seu ambiente Nginx:

      Usando seu editor de texto preferido, crie um novo arquivo index.html dentro da pasta app:

      Coloque o seguinte conteúdo neste arquivo:

      ~/compose-demo/app/index.html

      <!doctype html>
      <html lang="en">
      <head>
          <meta charset="utf-8">
          <title>Docker Compose Demo</title>
          <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
      </head>
      <body>
      
          <h1>This is a Docker Compose Demo Page.</h1>
          <p>This content is being served by an Nginx container.</p>
      
      </body>
      </html>
      

      Salve e feche o arquivo quando terminar. Caso esteja usando o nano, faça isso digitando CTRL+X e, depois, Y e ENTER para confirmar.

      Em seguida, crie o arquivo docker-compose.yml:

      Insira o seguinte conteúdo em seu arquivo docker-compose.yml:

      docker-compose.yml

      version: '3.7'
      services:
        web:
          image: nginx:alpine
          ports:
            - "8000:80"
          volumes:
            - ./app:/usr/share/nginx/html
      

      O arquivo docker-compose.yml normalmente começa com a definição de version. Isso dirá ao Docker Compose qual versão de configuração estamos usando.

      Então temos o bloco services, onde configuramos os serviços que fazem parte deste ambiente. No nosso caso, temos um único serviço chamado web. Este serviço usa a imagem nginx:alpine e configura um redirecionamento de porta com a diretiva ports. Todas as requisições na porta 8000 da máquina host (o sistema a partir do qual você está executando o Docker Compose) serão redirecionadas para o contêiner web na porta 80, onde o Nginx estará em execução.

      A diretiva volumes irá criar um volume compartilhado entre a máquina host e o contêiner. Isso irá compartilhar a pasta local app com o contêiner, e o volume estará localizado em /usr/share/nginx/html dentro do contêiner. Assim, ele substituirá a raiz dos documentos padrão para o Nginx.

      Salve e feche o arquivo.

      Criamos uma página demo e um arquivo docker-compose.yml para criar um ambiente conteinerizado de servidor Web que irá apresentá-la. No próximo passo, vamos ativar este ambiente com o Docker Compose.

      Passo 3 — Executando o Docker Compose

      Com o arquivo docker-compose.yml no lugar, agora podemos executar o Docker Compose para ativar o nosso ambiente. O comando a seguir irá baixar as imagens Docker necessárias, criar um contêiner para o serviço web, e executar o ambiente conteinerizado em segundo plano.

      O Docker Compose procurará primeiro pela imagem definida no sistema local, e se ele não puder localizar a imagem ele irá baixar a imagem do Docker Hub. Você verá um resultado como esse:

      Output

      Creating network "compose-demo_default" with the default driver Pulling web (nginx:alpine)... alpine: Pulling from library/nginx cbdbe7a5bc2a: Pull complete 10c113fb0c77: Pull complete 9ba64393807b: Pull complete c829a9c40ab2: Pull complete 61d685417b2f: Pull complete Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502 Status: Downloaded newer image for nginx:alpine Creating compose-demo_web_1 ... done

      Seu ambiente agora está executando em segundo plano. Para verificar se o contêiner está ativo, você pode executar:

      Este comando irá lhe mostrar informações sobre os contêineres em execução e seus estados, bem como quaisquer redirecionamentos de porta atualmente em vigor:

      Output

      Name Command State Ports ---------------------------------------------------------------------------------- compose-demo_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000->80/tcp

      Agora você pode acessar a aplicação de demonstração apontando seu navegador para localhost:8000 se você a estiver executando em sua máquina local, ou your_server_domain_or_IP:8000 no caso de um servidor remoto.

      Você verá uma página como esta:

      Docker Compose Demo Page

      Porque o volume compartilhado que você configurou dentro do arquivo docker-compose.yml mantém seus arquivos da pasta app em sincronização com a raiz de documentos do contêiner. Se você fizer quaisquer alterações no arquivo index.html, elas serão selecionadas automaticamente pelo contêiner e refletidas no navegador quando você recarregar a página.

      No próximo passo, você verá como gerenciar seu ambiente conteinerizado com comandos Docker Compose .

      Você viu como configurar um arquivo docker-compose.yml e ativar seu ambiente com docker-compose up. Agora você verá como usar comandos Docker Compose para gerenciar e interagir com seu ambiente conteinerizado.

      Para verificar os logs produzidos pelo seu contêiner Nginx, você pode usar o comando logs:

      Você verá um resultado parecido com este:

      Output

      Attaching to compose-demo_web_1 web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up web_1 | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

      Se você quiser pausar a execução do ambiente sem alterar o estado atual dos seus contêineres, você pode usar:

      Output

      Pausing compose-demo_web_1 ... done

      Para retomar a execução após emitir uma pausa:

      Output

      Unpausing compose-demo_web_1 ... done

      O comando stop terminará a execução do contêiner mas ele não irá destruir quaisquer dados associados aos seus contêineres:

      Output

      Stopping compose-demo_web_1 ... done

      Se você quiser remover os contêineres, redes e volumes associados a este ambiente conteinerizado, use o comando down:

      Output

      Removing compose-demo_web_1 ... done Removing network compose-demo_default

      Observe que isso não removerá a imagem base usada pelo Docker Compose para lançar seu ambiente (no nosso caso, nginx:alpine). Desta forma, sempre que você ativar seu ambiente novamente com um docker-compose up, o processo será muito mais rápido, uma vez que a imagem já está em seu sistema.

      Caso você queira também remover a imagem base do seu sistema, use:

      • docker image rm nginx:alpine

      Output

      Untagged: nginx:alpine Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912 Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270 Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1 Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157 Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6 Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08 Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

      Nota: por favor, consulte nosso guia How to Install and Use Docker para uma referência mais detalhada sobre os comandos Docker.

      Conclusão

      Neste guia, vimos como instalar o Docker Compose e configurar um ambiente conteinerizado baseado em uma imagem de servidor Web Nginx. Também vimos como gerenciar este ambiente usando comandos Compose.

      Para uma referência completa de todos os comandos docker-compose disponíveis, verifique a documentação oficial.



      Source link