🗺️ A Orquestração de uma Stack Completa com Docker Compose

flowchart TD
    COMPOSE["docker compose up -d (Lê compose.yaml)"]

    COMPOSE --> NET["Rede Bridge Automática ('app-network')"]
    
    NET --> API["Serviço 'api'\n(FastAPI / Node.js)"]
    NET --> DB["Serviço 'postgres'\n(Healthcheck: pg_isready)"]
    NET --> CACHE["Serviço 'redis'\n(In-Memory Cache)"]
    NET --> QUEUE["Serviço 'rabbitmq'\n(Mensageria AMQP)"]

    API --> |"depends_on (condition: service_healthy)"| DB
    API --> CACHE
    API --> QUEUE

    style COMPOSE fill:#ede7f6,stroke:#512da8,stroke-width:2px
    style NET fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
    style API fill:#00897b,stroke:#004d40,stroke-width:2px,color:#ffffff
    style DB fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
    style CACHE fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
    style QUEUE fill:#fff9c4,stroke:#fbc02d,stroke-width:1.5px

📖 Fundamentos e Aplicação

Em arquiteturas modernas, uma aplicação raramente roda isolada: ela depende de banco de dados, filas assíncronas, caches e proxies. O Docker Compose permite declarar toda essa topologia em um único arquivo compose.yaml (ou docker-compose.yml) e inicializá-la com um único comando.

1. Boas Práticas no Compose Moderno:

  • Resolução de Nomes por DNS Embutido: Containers conversam entre si usando o próprio nome do serviço (ex: postgres://db_user:pass@postgres:5432/meudb), dispensando IPs fixos.
  • Ordem de Inicialização Inteligente com healthcheck: Use depends_on com condition: service_healthy para garantir que a API só inicie quando o PostgreSQL estiver realmente pronto para aceitar conexões SQL.
  • Isolamento de Variáveis de Ambiente: Utilize arquivos .env locais mantidos fora do controle de versão (.gitignore) e forneça um .env.example com placeholders seguros.

2. Comandos do Compose V2 (Nativo no Docker CLI):

  • docker compose up -d: Sobe todos os serviços em background.
  • docker compose down -v: Para os serviços e remove os volumes de dados.
  • docker compose logs -f api: Acompanha os logs em tempo real do serviço especificado.

🧭 Navegação Rápida

| 📖 Teoria | 📊 Slides | 🧠 Quiz | 💻 Exemplos | 🧩 Exercícios | | :— | :— | :— | :— | :— | | Ler Tópico | Ver Slides | Fazer Quiz | Ver Código | Praticar |


🧭 Navegação do Capítulo: ⬅️ Capítulo Anterior · 📚 Sumário do Módulo · ➡️ Próximo Capítulo