Docker Compose au-delà du développement
Docker Compose n'est pas uniquement réservé au développement. Avec les bonnes pratiques, il devient un outil puissant pour orchestrer des applications en production.
Structure de fichiers recommandée
├── docker-compose.yml # Configuration de base
├── docker-compose.prod.yml # Overrides production
├── docker-compose.dev.yml # Overrides développement
├── .env.production # Variables d'environnement
└── nginx/
└── default.conf # Configuration Nginx
Configuration de production
version: '3.8'
services:
app:
build:
context: .
target: production
restart: always
deploy:
resources:
limits:
memory: 512M
cpus: '0.5'
healthcheck:
test: ["CMD", "php-fpm-healthcheck"]
interval: 30s
timeout: 5s
retries: 3
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
app:
condition: service_healthy
redis:
image: redis:7-alpine
restart: always
command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru
Gestion des logs
Configurez un driver de logging centralisé pour faciliter le monitoring :
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
Points essentiels
- Toujours définir
restart: alwayspour la résilience - Limiter les ressources avec
deploy.resources - Utiliser des healthchecks pour la haute disponibilité
- Séparer les volumes de données persistantes
- Ne jamais exposer les ports internes inutilement