Kennisbank › Docker Compose › docker compose
docker compose starter 30 August 2026

docker compose

Docker Compose : définir et exécuter des applications multi-conteneurs

Le cœur de Docker Compose est le Compose file : un fichier YAML contenant les services, les réseaux, les volumes et les configurations. Ce fichier s’appelle généralement `compose.yaml` ou `docker-compose.yml`. Les services sont décrits avec des caractéristiques telles que l’image Docker, les instructions de build, les mappages de ports, les variables d’environnement, les dépendances et les montages de volumes. Cette approche déclarative rend l’infrastructure reproductible et versionnable — l’infrastructure comme code.

La CLI Compose : v2 et v5

La CLI Compose est l’interface en ligne de commande de Docker Compose. Les versions actuellement prises en charge sont Compose v2 et v5. Elles sont incluses dans Docker Desktop et disponibles pour Linux.

Depuis Compose v2, l’appel est passé de `docker-compose` (avec un trait d’union) à `docker compose` (sans trait d’union). C’est désormais une sous-commande de `docker`. Ce changement intègre Compose plus harmonieusement avec Docker Engine et garantit une expérience utilisateur cohérente.

Depuis Compose v2, l’outil ignore le champ de niveau supérieur `version` dans le fichier Compose. Autrefois, il fallait spécifier `version: '3.8'` pour indiquer le format. Maintenant, Compose se base sur la Compose Specification — une norme commune, maintenue par la communauté open source et Docker. Cette spécification uniformise le format du fichier Compose, indépendamment de l’application utilisatrice ou de l’environnement. Tant que vous respectez la spécification, vous n’avez pas à vous soucier de la compatibilité entre les versions de Compose.

Historique et versions

Docker Compose remonte à 2014, lorsque Compose v1 est sorti. Cette première version a simplifié le développement d’applications multi-conteneurs complexes. v1 a été largement adoptée, mais présentait des limites : une intégration déficiente avec Docker Engine et des fonctionnalités limitées pour la gestion des piles en mode swarm.

En 2020, Docker a annoncé Compose v2 — une réécriture complète en Go. Cette version offre de meilleures performances, une meilleure gestion des erreurs et une intégration plus étroite avec la plateforme Docker.

Le support de Compose v1 a pris fin après juin 2023. À partir de ce moment, v1 a été retirée des versions futures de Docker Desktop. La transition vers v2 était nécessaire pour réduire la dette technique et accélérer le développement de nouvelles fonctionnalités dans une base de code plus moderne.

Compose v2 a ajouté des fonctionnalités qui donnent plus de contrôle aux développeurs. Le transfert d’agent `ssh` pour la construction sécurisée d’images est arrivé dans Compose v2.4.0 GA. Cela permet de cloner des dépôts Git privés pendant le processus de build sans copier les clés SSH dans le conteneur.

La spécification de plateforme dans la section build est arrivée dans Compose v2.11.0. Elle spécifie explicitement sur quelle architecture CPU une image doit être construite — `linux/amd64` ou `linux/arm64` — pertinent lors du développement sur Mac Apple Silicon (M1/M2) ou pour un déploiement multi-architectures.

Le développement reste actif. Selon le dépôt GitHub officiel, il y a eu 284 versions à ce jour. La version la plus récente, v5.5.0, est sortie le 17 août 2026. Docker Compose reste un composant central de l’écosystème Docker.

Le 31 août 2021, le code de la CLI Compose a été officiellement transféré vers le dépôt `docker/compose/v2`. Cette migration a marqué la fin de l’ancienne base de code et le début d’une nouvelle ligne de développement. Le code est open source sous licence MIT.

Travailler avec Docker Compose

Étape 1 : Créer un dossier de projet et un fichier Compose

Créez un dossier pour votre projet et un fichier `compose.yaml` :

mkdir myapp && cd myapp && touch compose.yaml

Étape 2 : Définir les services

Ouvrez `compose.yaml` dans votre éditeur et définissez les services. Un exemple avec PostgreSQL, Redis et Nginx :

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - db-data:/var/lib/postgresql/data
  redis:
    image: redis:7
  web:
    image: nginx:1.27
    ports:
      - "8080:80"
    depends_on:
      - db
      - redis</p><p>volumes:
  db-data:

Étape 3 : Démarrer la pile

Démarrez tous les services avec une seule commande :

docker compose up -d

`-d` exécute les conteneurs en arrière-plan (mode détaché).

Étape 4 : Vérifier l’état

Vérifiez que tous les services fonctionnent :

docker compose ps

Étape 5 : Consulter les journaux

Consultez les journaux d’un service spécifique :

docker compose logs web

Étape 6 : Arrêter la pile

Arrêtez tous les services :

docker compose down

Étape 7 : Construisez des images avec spécification de plateforme

Construisez une image pour une plateforme spécifique :

docker compose build --platform linux/arm64

Étape 8 : Utilisez `docker stack deploy` pour le mode swarm

Déployez une stack basée sur un fichier Compose en mode swarm :

docker stack deploy --compose-file compose.yaml mystack

Vérification

Vérifiez que la stack fonctionne correctement :

docker compose ps

La sortie affiche chaque service avec le statut `Up` ou `running`. Vérifiez également que les services sont accessibles sur les ports attendus :

curl http://localhost:8080

Pour une stack sans état avec PostgreSQL, Redis et Nginx, une réponse HTTP de Nginx confirme que la stack fonctionne.

Problèmes fréquents

1. `docker compose` ne fonctionne pas

Cause : Compose v1 est utilisé ou Compose n'est pas installé. Solution : Utilisez `docker-compose` (avec un trait d'union) pour v1, ou installez Compose v2. Vérifiez la version :

docker compose version

2. Erreur : `version` est ignoré

Cause : Compose v2 ignore le champ `version`. Solution : Supprimez le champ `version` de `compose.yaml`. Suivez la spécification Compose.

3. Le transfert de l'agent SSH ne fonctionne pas

Cause : L'agent SSH n'est pas démarré ou la clé n'est pas chargée. Solution : Démarrez l'agent et chargez la clé :

eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519

Outils associés

`docker stack config` affiche le contenu final d'un fichier Compose après fusion et interpolation des variables. Utile pour le débogage et la validation de configurations complexes.

Whaler est un programme Linux pour la gestion de conteneurs Docker. Il démarre et arrête des conteneurs autonomes et des applications Docker Compose, affiche les journaux et propose une interface simple pour les actions de base. Développé par Selivestrov Dmitriy, sous licence GPL-3.0+, installable via Flatpak.

Versions obsolètes

Les versions plus anciennes du format de fichier Compose — v1 et v2.x — ne sont plus activement maintenues. Leur documentation a été déplacée vers la branche V1 du dépôt Compose sur GitHub. La spécification Compose est la norme depuis Compose 1.27.0+.

Docker Compose unifie des applications multi-services complexes dans un fichier YAML, permet aux développeurs d'itérer rapidement et assure la cohérence entre les environnements de développement, de test et de production. Avec un cycle de développement actif, une intégration solide avec Docker et une migration claire loin des versions obsolètes, Docker Compose reste un choix fiable pour les charges de travail conteneurisées. La question n'est pas de savoir si vous utilisez Compose, mais quand vous passerez à v5.

← Retour à la base de connaissances
← Terug naar kennisbank