Docker Compose

Définition

Docker Compose est un outil permettant de définir et d’exécuter des applications Docker multi-conteneurs. Il utilise un fichier YAML (docker-compose.yml) pour configurer les services, réseaux et volumes d’une application, puis crée et démarre tous les services avec une seule commande.

Compose est principalement utilisé pour les environnements de développement, de test et de staging local. Pour l’orchestration en production, Kubernetes est généralement utilisé à la place.

Concepts clés

  • Service : Une application conteneurisée (ex. : application web, base de données, cache)
  • Réseau : Réseau Docker connectant les services
  • Volume : Stockage de données persistant monté dans les conteneurs
  • docker-compose.yml : Fichier de configuration déclaratif
  • docker compose up : Démarrer tous les services
  • docker compose down : Arrêter et supprimer tous les services

Exemple docker-compose.yml

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    depends_on:
      - app
    networks:
      - frontend

  app:
    build: .
    environment:
      - DATABASE_URL=postgres://user:***@db:5432/mydb
    networks:
      - frontend
      - backend

  db:
    image: postgres:16
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - backend

volumes:
  pgdata:

networks:
  frontend:
  backend:

Commandes Compose

|| Commande | Description | ||———|————-| || docker compose up | Démarrer tous les services | || docker compose up -d | Démarrer en mode détaché | || docker compose down | Arrêter et supprimer tout | || docker compose ps | Lister les services en cours d’exécution | || docker compose logs | Afficher les logs des services | || docker compose build | Construire les images | || docker compose exec | Exécuter une commande dans un conteneur | || docker compose config | Valider et afficher la configuration |

Compose vs Kubernetes

|| Fonctionnalité | Docker Compose | Kubernetes | ||———|—————|————| || Portée | Hôte unique | Cluster multi-noeuds | || Mise à l’échelle | Manuelle | Auto-scaling | || HA | Non intégré | Intégré | || Configuration | Fichier YAML | Manifestes YAML/CRD | || Cas d’usage | Dev/local | Production | || Orchestration | Non | Oui |

Termes associés

  • Docker — Implémentation Compose compatible Podman
  • Docker Swarm — Orchestration native de Docker (obsolète)
  • Dockerfile — définit les images de conteneur individuelles

Références