📦 Docker Compose
Orchestration multi-conteneurs
Aide-mémoire
Docker Compose — Aide-mémoire
Commandes essentielles
# Démarrer tous les services (en arrière-plan)
docker compose up -d
Démarrer et rebuild si nécessaire
docker compose up -d --build
Arrêter tous les services
docker compose down
Arrêter et supprimer les volumes
docker compose down -v
Voir les logs de tous les services
docker compose logs -f
Logs d'un service spécifique
docker compose logs -f mon-service
Redémarrer un service
docker compose restart mon-service
Exécuter une commande dans un service
docker compose exec mon-service bash
Voir l'état des services
docker compose ps
Rebuild une image sans cache
docker compose build --no-cache
Valider la syntaxe du fichier
docker compose config
Structure de base
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
depends_on:
- api
api:
build:
context: ./backend
dockerfile: Dockerfile
environment:
- NODE_ENV=production
- DB_HOST=db
ports:
- "3000:3000"
volumes:
- app_data:/data
networks:
- backend
restart: unless-stopped
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- pg_data:/var/lib/postgresql/data
networks:
- backend
restart: unless-stopped
volumes:
app_data:
pg_data:
networks:
backend:
driver: bridge
Variables d'environnement
# Fichier .env (automatiquement chargé par Compose)
DB_PASSWORD=secret123
APP_PORT=8080
# Référencer une variable .env
services:
app:
ports:
- "${APP_PORT}:3000"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Healthcheck
services:
api:
image: mon-api
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
Profils (démarrage sélectif)
services:
app:
image: mon-app
# Toujours démarré
debug:
image: mon-debug
profiles: ["debug"]
# Seulement avec : docker compose --profile debug up
Dépendances avec condition
services:
app:
depends_on:
db:
condition: service_healthy
cache:
condition: service_started
Limites de ressources
services:
app:
image: nginx
deploy:
resources:
limits:
cpus: "0.5"
memory: 512M
reservations:
memory: 128M
Surcharge avec docker-compose.override.yml
# docker-compose.override.yml (dev uniquement, gitignore)
services:
app:
build:
target: dev
volumes:
- .:/app # hot reload
ports:
- "9229:9229" # debugger
environment:
- DEBUG=*
🔧 Ouvrir tools.rdr-it.com — application complète →
Plus de 40 outils AdminSys gratuits · SSL · DNS · Docker · Nginx · SSH · Mermaid · et plus