1. Quando Compose basta
Para um único host (VPS, homelab, app pequeno), Compose é suficiente. Quando precisar de multi-node, rolling update avançado e service discovery rico, avalie Swarm ou Kubernetes.
2. Limites de CPU e memória
services:
api:
image: minha-api:1.2.0
deploy:
resources:
limits:
cpus: "1.0"
memory: 512M
reservations:
memory: 256M
Sem limites, um container vaza memória e derruba o host.
3. Healthcheck
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 15s
timeout: 3s
retries: 3
start_period: 20s
4. Restart e deploy
restart: unless-stopped
# deploy:
# docker compose pull
# docker compose up -d --remove-orphans
DICA Use tags imutáveis (
1.2.0), não só latest, e registre o digest no changelog.5. Checklist
- Volumes nomeados para dados persistentes
- Rede interna; só public ports necessários
- Secrets fora do Git (env file ou secret store)
- Logs com rotação (json-file max-size)
- Backup testado dos volumes