Retour au blog
Docker

Docker Compose en production

28 Feb 2024 10 min
Docker Production DevOps

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: always pour 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