Até agora, vimos como instalar o Docker no Linux e como subir containers individuais usando o comando docker run. Mas no cenário real do DevOps e da Engenharia de Dados, as aplicações raramente rodam sozinhas.
Imagine que você precisa subir um ambiente de desenvolvimento com uma API em Python, um banco de dados PostgreSQL e uma interface do Metabase para analisar os dados. Rodar isso tudo no braço via terminal significaria gerenciar múltiplos comandos gigantescos, configurar redes isoladas manualmente e garantir que o banco suba antes da API. Uma dor de cabeça enorme.
É aqui que o Docker Compose brilha. Ele permite que você defina e rode múltiplos containers usando apenas um arquivo de configuração centralizado.
O que é o Docker Compose?
O Docker Compose é uma ferramenta integrada ao Docker para definir aplicações multi-container. Em vez de usar scripts imperativos cheios de comandos de terminal, você usa uma abordagem declarativa.
Você escreve um único arquivo no formato YAML (geralmente chamado docker-compose.yml) descrevendo toda a sua infraestrutura: quais serviços deseja rodar, quais portas eles vão expor, como eles se conectam entre si e onde os dados serão salvos. Depois disso, a mágica acontece com um único comando:
docker compose up -d
O Arquivo na Prática: Subindo uma Stack de Dados Clássica
Para ilustrar o poder do Compose, vamos criar um exemplo clássico de engenharia: uma aplicação web simples que se conecta a um banco de dados PostgreSQL. O Compose criará os containers automaticamente, além de configurar uma rede isolada para que eles se comuniquem de forma segura usando apenas os seus nomes de serviço.
Entendendo os Parâmetros Chave:
services: Define as caixas (containers) que vão compor a sua aplicação. No nosso caso, temos odb_dadose opgadmin_web.ports: Mapeia a porta da sua máquina física para a porta interna do container. Ao acessarhttp://localhost:8080no seu navegador, você entrará na interface do pgAdmin.volumes: Crucial para persistência de dados. Se o container do banco de dados for destruído ou atualizado, as tabelas e dados não serão perdidos porque estão mapeados no volume nomeadopgdata.depends_on: Diz ao Docker que o pgAdmin depende do banco de dados. O Compose é inteligente e vai garantir que o container do Postgres suba antes de tentar iniciar a interface web.
Gerenciando a Infraestrutura no Terminal
Com o arquivo criado, o controle do seu ambiente fica ridiculamente simples. Veja o passo a passo para gerenciar essa stack:
Inicie toda a infraestrutura
Entre no diretório onde salvou o arquivo docker-compose.yml e execute o comando abaixo para baixar as imagens e rodar os containers em segundo plano (detached mode):
docker compose up -d
Verifique o status da sua Stack
Para checar se todos os serviços configurados no arquivo estão saudáveis e rodando, use:
docker compose ps
Derrube o ambiente de uma só vez
Terminou o dia de trabalho? Você limpa a sua máquina e desliga todos os containers e redes criadas com apenas um comando (lembrando que seus dados continuam salvos de forma segura no volume):
docker compose down
💡 Dica de Infraestrutura: Repare que dentro das configurações do pgAdmin, para se conectar ao banco de dados, você não precisa descobrir o endereço IP interno do container do Postgres. Você pode simplesmente colocar
db_dadosno campo de host (servidor). O Docker Compose cria um servidor DNS interno automático que resolve o nome do serviço diretamente para o container correto!
O Docker Compose é o primeiro passo para sair do ambiente de desenvolvimento local e começar a pensar como um arquiteto de soluções DevOps.