AULA 58 MÓDULO 8 Docker e deploy ⏱ 55 min

Docker na Prática

Docker Compose: orquestrar múltiplos containers. Volumes para persistência. Service discovery por nome.

Docker Composevolumesredesdepends_onhealthcheckservice discovery

Docker Compose

Docker Compose orquestra múltiplos containers com um único arquivo YAML. Em vez de 5 comandos docker run, você escreve uma vez e usa docker compose up.

🏗️
ambiente local completo
docker-compose.yml com Node API + PostgreSQL + Redis + Nginx. Em 30 segundos, ambiente de dev idêntico ao de qualquer desenvolvedor do time.

Volumes e redes

Containers são efêmeros — dados morrem com eles. Volumes persistem dados além do ciclo do container. Redes isolam comunicação entre containers.

🔗
service discovery
Em Docker Compose, containers se comunicam pelo nome do serviço: a API acessa Postgres em postgres:5432, não em localhost. O Compose cria DNS automático entre serviços.
javascript
# docker-compose.yml — stack completa
version: '3.9'

services:
  api:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://app:senha@postgres:5432/appdb
      - REDIS_URL=redis://redis:6379
    depends_on:
      postgres:
        condition: service_healthy
    volumes:
      - ./src:/app/src  # hot reload em dev

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: senha
      POSTGRES_DB: appdb
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app"]
      interval: 5s

  redis:
    image: redis:7-alpine

volumes:
  pgdata:  # volume persistente

# docker compose up -d    # iniciar em background
# docker compose logs -f  # ver logs
# docker compose down -v  # parar e apagar volumes
quiz · aula 58
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
Por que volumes são necessários no Docker?
QUESTÃO 02
Em Docker Compose, como a API acessa o PostgreSQL?
QUESTÃO 03
O que faz depends_on com condition: service_healthy?
0/3