Prepare um projeto Docker Compose simples
Nesta etapa, prepararemos um projeto Docker Compose simples. Docker Compose é uma ferramenta para definir e executar aplicações Docker multi-container. Com o Compose, você usa um arquivo YAML para configurar os serviços da sua aplicação. Em seguida, com um único comando, você cria e inicia todos os serviços a partir da sua configuração.
Como o Docker Compose não está pré-instalado no ambiente LabEx, precisamos instalá-lo primeiro. Faremos o download do binário do Docker Compose e o tornaremos executável.
Primeiro, vamos baixar o binário do Docker Compose. Usaremos curl para baixar a versão estável mais recente.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Este comando baixa o binário do Docker Compose para a arquitetura do seu sistema e o salva em /usr/local/bin/docker-compose.
Em seguida, precisamos tornar o binário baixado executável.
sudo chmod +x /usr/local/bin/docker-compose
Este comando adiciona permissões de execução ao binário do Docker Compose.
Agora, vamos verificar a instalação verificando a versão do Docker Compose.
docker-compose --version
Você deve ver a versão do Docker Compose instalada na saída, confirmando que a instalação foi bem-sucedida.
Agora que o Docker Compose está instalado, vamos criar um projeto Docker Compose simples. Criaremos um diretório para nosso projeto e, em seguida, criaremos um arquivo docker-compose.yml dentro dele.
Primeiro, crie um diretório chamado my-compose-app no seu diretório home.
mkdir ~/project/my-compose-app
Navegue para o diretório recém-criado.
cd ~/project/my-compose-app
Agora, criaremos um arquivo docker-compose.yml. Este arquivo definirá os serviços para nossa aplicação. Usaremos nano para criar e editar o arquivo.
nano docker-compose.yml
Dentro do editor nano, cole o seguinte conteúdo:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: ubuntu:latest
command: tail -f /dev/null
Vamos detalhar este arquivo docker-compose.yml:
version: '3.8' especifica a versão do formato do arquivo Docker Compose.
services: define os serviços que compõem sua aplicação.
web: define um serviço chamado web.
image: nginx:latest especifica que este serviço usará a imagem Docker nginx:latest. Se a imagem não estiver disponível localmente, o Docker Compose a puxará do Docker Hub.
ports: mapeia a porta 80 na máquina host para a porta 80 no container web.
app: define um serviço chamado app.
image: ubuntu:latest especifica que este serviço usará a imagem Docker ubuntu:latest.
command: tail -f /dev/null especifica o comando a ser executado quando o container app iniciar. Este comando mantém o container em execução indefinidamente sem sair.
Salve o arquivo pressionando Ctrl + X, depois Y e, em seguida, Enter.
Antes de podermos iniciar os serviços, precisamos garantir que as imagens Docker necessárias estejam disponíveis. Embora o Docker Compose puxe as imagens se elas não estiverem presentes, é uma boa prática puxá-las explicitamente de antemão, especialmente em ambientes com acesso limitado à internet ou para uma inicialização mais rápida.
Vamos puxar a imagem nginx:latest.
docker pull nginx:latest
Este comando baixa a imagem nginx:latest do Docker Hub.
Em seguida, vamos puxar a imagem ubuntu:latest.
docker pull ubuntu:latest
Este comando baixa a imagem ubuntu:latest do Docker Hub.
Agora você preparou com sucesso um projeto Docker Compose simples com dois serviços, web e app, e puxou as imagens Docker necessárias.