Orchestrer avec Docker Compose
docker run fonctionne pour un seul conteneur. Dès que l'on a plusieurs services (web + base de données + cache), Docker Compose simplifie la gestion de l'ensemble.
Le fichier compose.yml
# compose.yml (anciennement docker-compose.yml)
services:
web:
build: . # construire l'image depuis le Dockerfile local
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:pass@db/myapp
- REDIS_URL=redis://cache:6379
depends_on:
db:
condition: service_healthy
networks:
- app-net
db:
image: postgres:16
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: myapp
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d myapp"]
interval: 5s
timeout: 5s
retries: 5
networks:
- app-net
cache:
image: redis:7-alpine
networks:
- app-net
volumes:
postgres-data:
networks:
app-net:
driver: bridge
Commandes essentielles
# Démarrer tous les services (rebuild si nécessaire)
docker compose up -d
# Forcer le rebuild des images
docker compose up -d --build
# Voir les logs de tous les services
docker compose logs -f
# Voir les logs d'un service spécifique
docker compose logs -f web
# Voir l'état des services
docker compose ps
# Arrêter les services (conteneurs conservés)
docker compose stop
# Arrêter et supprimer les conteneurs
docker compose down
# Arrêter, supprimer conteneurs ET volumes
docker compose down -v # ⚠️ supprime les données !
# Exécuter une commande dans un service
docker compose exec web bash
docker compose exec db psql -U user -d myapp