TL;DR : Docker Compose v1 (
docker-compose) a été entièrement supprimé en avril 2025. Le champversiondans votre YAML est mort. La cléx-developest maintenant simplementdevelop. Le mode watch est prêt pour la production avecinitial_sync. Il existe une CVE critique de traversée de chemins (CVE-2025-62725) si vous utilisezincludeavec des artefacts OCI : mettez à jour vers v2.40.2 ou plus récent. Et oui, Compose est passé de v2 à v5. Les détails ci-dessous.
Publié initialement en novembre 2024. Mis à jour en mars 2026 avec Compose v5, CVE-2025-62725, la suppression de v1, et les nouvelles fonctionnalités de la spécification.
Si vous utilisez Docker Compose depuis un moment, vous avez probablement remarqué que des choses cassaient ou changeaient sous vos pieds. Les deux dernières années ont été l’évolution la plus agressive que Compose ait jamais connue -- et tout n’était pas évident.
J’utilise Compose tous les jours. La plupart de mes environnements de développement tournent dessus. Quand les choses changent, je le remarque. Voici ce qui compte vraiment.
Ce qui a cassé
docker-compose est mort
Pas déprécié. Pas en mode maintenance. Mort. Le binaire autonome docker-compose (la v1 basée sur Python) a été supprimé des runners GitHub Actions et des images Docker officielles en avril 2025 [1]. Si vos pipelines CI/CD référencent encore docker-compose avec un trait d’union, ils sont cassés ou sur le point de l’être.
# This no longer works
docker-compose up -d
# This is the only way now
docker compose up -dLe docker compose basé sur Go (v2, maintenant v5) est la vraie implémentation depuis 2022. La CLI v1 était sous assistance respiratoire pour compatibilité. Cette assistance est terminée.
Le champ version a disparu
Arrêtez de mettre version: "3.8" en haut de vos fichiers Compose. Cela ne fait rien. Il est ignoré depuis v2 et il est maintenant officiellement déprécié. Les fichiers Compose modernes commencent par services:.
# Stop doing this
version: "3.8"
services:
web:
image: nginx
# Just do this
services:
web:
image: nginxSi vous voyez version: dans un tutoriel, ce tutoriel est obsolète.
Autres dépréciations
links-- utilisez les réseaux Docker. Les links sont legacy depuis le lancement de Compose v2.container_name-- laissez Docker gérer les noms. Les noms codés en dur cassent le scaling et provoquent des conflits.- Syntaxe courte des volumes pour les montages complexes -- utilisez la syntaxe longue avec
type,source,target.
Ce qui est nouveau et réellement utile
Mode watch (maintenant prêt pour la production)
C’est la plus grosse amélioration de confort depuis des années. La section develop (anciennement x-develop -- retirez le préfixe x-, ce n’est plus expérimental) permet de définir des règles de surveillance de fichiers qui synchronisent ou reconstruisent automatiquement quand les fichiers changent :
services:
web:
build: .
develop:
watch:
- path: ./src
action: sync
target: /app/src
- path: ./package.json
action: rebuildTrois actions disponibles (depuis v2.32.0) :
sync-- copie les fichiers modifiés dans le conteneur sans reconstruirerestart-- redémarre le service quand les fichiers changentrebuild-- déclenche une reconstruction complète
Depuis septembre 2025, il existe aussi initial_sync : cela synchronise tous les fichiers immédiatement au démarrage de docker compose watch, pour que vous n’ayez pas à attendre le premier changement avant de déclencher la synchronisation. Cela a été un point de friction pendant longtemps.
docker compose watchPlus besoin de reconstructions manuelles pendant le développement. Cela a vraiment changé mon workflow.
Include avec des artefacts OCI
La directive include peut maintenant récupérer des fragments Compose depuis des registres OCI :
include:
- oci://docker.io/username/my-compose-fragment:latestIl existe aussi une prise en charge expérimentale des dépôts Git. C’est utile pour partager des définitions de services communes entre projets -- configurations de bases de données, stacks de monitoring, etc.
Mais lisez d’abord la section sécurité ci-dessous. Il y a une CVE.
Prise en charge des GPU
Le passthrough GPU est devenu plus propre. Il existe maintenant une syntaxe plus courte gpus: (v2.30.0+) en plus de l’approche verbeuse deploy.resources.reservations.devices. La prise en charge des GPU AMD a été officiellement intégrée en 2025 -- ce n’est plus seulement NVIDIA.
Élément models
La spécification Compose inclut maintenant un élément models pour définir des modèles IA/ML comme artefacts OCI. Vous pouvez empaqueter des LLMs et des runtimes d’inférence directement dans votre configuration Compose. C’est de niche, mais intéressant si vous faites du travail IA en local.
Dépendances améliorées
Les conditions de depends_on sont devenues plus flexibles :
services:
web:
depends_on:
db:
condition: service_healthy
restart: true # restart web if db restarts
required: false # web can start even if db isn't readyLes options restart: true et required: false sont vraiment utiles pour des environnements de développement locaux plus résilients.
Ce que vous devez savoir
CVE-2025-62725 : traversée de chemins avec include
Si vous utilisez la directive include avec des artefacts OCI, mettez à jour vers v2.40.2 ou plus récent immédiatement [2]. Une vulnérabilité de traversée de chemins permet à un attaquant de sortir du répertoire de cache pendant la résolution de l’artefact. Même un docker compose ps apparemment inoffensif peut la déclencher si votre fichier Compose inclut une référence OCI malveillante.
Docker a corrigé cela avec une vérification validatePathInBase(), mais vous devez être sur la version corrigée.
Compose v5
Docker est passé de v2 à v5 (en sautant 3 et 4 pour éviter la confusion avec les anciennes versions du format de fichier) [3]. Fonctionnellement, v5 est identique aux dernières versions v2, mais elle inclut un SDK Go officiel pour l’accès programmatique -- ce qui signifie que vous pouvez intégrer des fonctionnalités Compose directement dans des applications Go sans appeler la CLI via le shell.
Vérifiez votre version :
docker compose version
# Docker Compose version v5.1.0Bake est l’outil de build par défaut
Docker Bake (via BuildKit) est maintenant l’outil par défaut pour docker compose build. Il gère mieux que le builder legacy les builds multi-cibles, la compilation multi-plateforme, et les stratégies avancées de cache. Si vous n’avez pas encore regardé les fichiers docker-bake.hcl, cela vaut la peine de comprendre le sujet -- surtout pour les builds multi-services complexes.
Améliorations des healthchecks
Le champ start_interval permet de définir un intervalle de vérification plus rapide pendant la période de grâce au démarrage :
services:
db:
healthcheck:
test: ["CMD", "pg_isready"]
start_period: 30s
start_interval: 2s # check every 2s during startup
interval: 30s # then every 30s after
retries: 3Cela signifie que vos services dépendants démarrent plus vite sans compromettre les intervalles de healthcheck en production.
Checklist de migration
Si vous n’avez pas mis à jour votre setup Compose depuis un moment :
- Supprimez
version:de tous les fichiers Compose. - Remplacez
docker-composepardocker composedans tous les scripts et configurations CI. - Renommez
x-developendevelopdans les configurations watch. - Mettez à jour vers v2.40.2+ si vous utilisez
include(CVE-2025-62725). - Remplacez
linkspar des réseaux Docker si vous les utilisez encore, d’une manière ou d’une autre. - Testez votre CI -- GitHub Actions a mis à jour ses runners vers Compose v2.40.3 en février 2026 [4].
Références
1. Docker Compose v1 removed from runner images (April 2025) -- Annonce GitHub Actions de la suppression de v1.
2. CVE-2025-62725: From "docker compose ps" to System Compromise -- Analyse détaillée d’Imperva sur la vulnérabilité de traversée de chemins avec include.
3. Docker Compose Releases -- Historique officiel des releases, y compris v5.
4. Docker and Docker Compose version upgrades on hosted runners -- Mise à jour des runners GitHub en février 2026.
5. Compose Specification -- Référence officielle des fichiers Compose.
6. Use Compose Watch -- Documentation Docker du mode watch.
7. Enable GPU Support in Docker Compose -- Documentation du passthrough GPU, y compris la prise en charge AMD.
8. Docker Compose Include -- Directive include avec prise en charge OCI et Git.
Articles liés
- Laravel Sail vs Laradock: Choosing the Right Docker Solution -- comparaison d’environnements de développement PHP basés sur Docker.

Commentaires