🐙 Cap 14: Docker Compose - Exemplos Práticos
Demonstrações práticas de orquestração local, healthchecks e segredos com arquivos .env.
🗺️ Fluxo de Resolução de DNS Interno no Docker Compose
flowchart LR
API["Serviço 'api'"] --> |"GET http://auth-service:3000"| DNS["DNS Server Embutido do Docker (127.0.0.11)"]
DNS --> |"Resolve para IP Virtual 172.20.0.4"| AUTH["Serviço 'auth-service'"]
API --> |"Conecta em redis:6379"| DNS
DNS --> |"Resolve para IP Virtual 172.20.0.2"| REDIS["Serviço 'redis' ⚡"]
style API fill:#00897b,stroke:#004d40,stroke-width:2px,color:#ffffff
style DNS fill:#ede7f6,stroke:#512da8,stroke-width:2px
style AUTH fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style REDIS fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
📄 Exemplo 1: Arquivo .env.example Seguro
# Configurações do Banco de Dados
POSTGRES_USER=postgres
POSTGRES_PASSWORD=altere_esta_senha_no_seu_env_local
POSTGRES_DB=empresa_dev
# Configurações da Aplicação
API_PORT=8000
SECRET_KEY=chave_secreta_jwt_dev_apenas
📄 Exemplo 2: Comandos Rápidos do Docker Compose V2
# Iniciar todos os serviços e forçar reconstrução das imagens modificadas:
docker compose up -d --build
# Visualizar o consumo de CPU e Memória de cada serviço da stack:
docker compose top
# Executar uma migração de banco dentro do container da API:
docker compose exec api python manage.py migrate