Introdução
No mundo real, nenhuma aplicação é uma ilha. Você vai precisar de um banco de dados, um broker de mensagens ou um cache. Tentar gerenciar tudo isso manualmente é pedir para ter dor de cabeça com rede e dependência de serviços.
O Docker Compose chega para ser o maestro dessa orquestra. Em vez de você explicar para o Docker como rodar cada peça, você declara o que você quer em um arquivo docker-compose.yml e ele se vira para montar o cenário.
A Stack: Flask + Redis
Nesse exemplo, temos uma API simples que conta visitas. O pulo do gato aqui é que a aplicação não precisa saber o IP do banco; ela simplesmente chama pelo nome do serviço: redis.
O arquivo mágico (docker-compose.yml)
Dá um ligue na simplicidade desse arquivo para subir uma infra que, antigamente, levaria horas configurando o SO:
YAML
version: '3.8'
services:
web:
build: . # Dockerfile tá na mesma pasta
ports:
- "5000:5000"
volumes:
- .:/code # Mapeia seu código local pra dentro do container
depends_on:
- redis # Só sobe a web depois que o redis estiver de pé
redis:
image: "redis:alpine" # Imagem leve e direta ao ponto
Por que isso é "coisa de profissional"?
Service Discovery Nativo: O Docker cria uma rede interna onde o serviço
webconsegue pingar oredispelo nome. Nada de IPs variáveis ou gambiarras no/etc/hosts.Desenvolvimento Ágil: Com a linha de
volumes, você altera o código no seu VS Code e a mudança reflete na hora dentro do container. É o famoso hot reload sem complicação.Gerenciamento de Ciclo de Vida: Com um comando você sobe tudo (
up), e com outro limpa a casa (down).
Comandos que você vai usar todo dia
Aqui é onde a produtividade acontece. Decora esses quatro e você já é 50% mais rápido que a média:
Bash
# Sobe a stack toda em background (o 'd' é de detached)
docker-compose up -d
# Deu erro? Acompanha o log da aplicação em tempo real
docker-compose logs -f web
# Precisa reiniciar só o banco?
docker-compose restart redis
# Terminou o dia? Derruba tudo e limpa os recursos
docker-compose down
Conclusão
Usar Docker Compose não é luxo, é sobrevivência. Ele garante que o seu ambiente de desenvolvimento seja um espelho fiel (ou muito próximo) do que vai rodar em homologação e produção.
Se você ainda está subindo container por container, pare agora. Centralize sua stack num YAML e gaste seu tempo com o que importa: código e café.
Dúvidas sobre como conectar outros bancos? Me chama no LinkedIn ou deixa um comentário.