docker compose
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.