Menu

Docker Compose : Qu'est-ce que c'est et comment l'utiliser ?

6 min de lecture Mis à jour le 02 Avr 2026

Définition

Docker Compose est un outil qui permet de définir et de gérer des applications multi-conteneurs Docker à l'aide d'un fichier YAML. Il simplifie le lancement, la configuration et l'interconnexion de plusieurs services (application, base de données, cache, etc.) en une seule commande.

Qu'est-ce que Docker Compose ?

Docker Compose est un outil d'orchestration locale qui fait partie de l'ecosysteme Docker. Il permet de definir l'ensemble des services, reseaux et volumes necessaires a une application dans un fichier declaratif au format YAML, generalement nomme docker-compose.yml. Plutot que de lancer manuellement chaque conteneur avec de longues commandes docker run, Compose permet de demarrer toute une pile applicative en une seule commande : docker compose up.

Cet outil repond a un besoin fondamental du developpement moderne : la reproductibilite des environnements. Lorsqu'un projet implique plusieurs composants — un serveur web Python/Django, une base de donnees PostgreSQL, un broker de messages Redis, un worker Celery — chacun doit etre configure et interconnecte correctement. Docker Compose formalise cette configuration dans un fichier versionne, garantissant que chaque membre de l'equipe travaille dans un environnement identique.

Chez Kern-IT, Docker Compose est un outil central de notre workflow de developpement. Chaque projet Django dispose d'un fichier Compose qui definit l'application, la base de donnees et les services auxiliaires. Cela permet a tout developpeur de cloner le depot, lancer docker compose up et disposer d'un environnement fonctionnel en quelques minutes, sans installer manuellement Python, PostgreSQL ou Redis sur sa machine.

Pourquoi Docker Compose est important

Dans un contexte ou les applications sont de plus en plus distribuees et composees de multiples services, Docker Compose apporte des benefices concrets a chaque etape du cycle de vie logiciel.

  • Reproductibilite garantie : le fichier docker-compose.yml est versionne dans Git. Chaque developpeur, qu'il travaille sous macOS, Linux ou Windows, obtient exactement le meme environnement. Fini les problemes de type « ca marche sur ma machine ».
  • Onboarding accelere : un nouveau developpeur rejoint le projet ? Il clone le depot, execute docker compose up et commence a coder. Plus besoin de documenter des procedures d'installation complexes ni de gerer des incompatibilites de versions.
  • Isolation des services : chaque service tourne dans son propre conteneur avec ses propres dependances. La version de PostgreSQL utilisee par un projet n'entre pas en conflit avec celle d'un autre projet. Cette isolation elimine les effets de bord.
  • Configuration declarative : les variables d'environnement, les ports exposes, les volumes montes et les reseaux internes sont decrits de maniere explicite. La configuration est lisible, auditable et facilement modifiable.
  • Tests d'integration simplifies : Compose permet de lancer une pile complete pour executer des tests d'integration dans un pipeline CI/CD, puis de la detruire proprement apres les tests.

Comment ca fonctionne

Docker Compose repose sur un fichier YAML qui decrit les services composant l'application. Chaque service correspond a un conteneur Docker, defini par une image (depuis Docker Hub ou un Dockerfile local) et des parametres de configuration : ports, volumes, variables d'environnement, dependances entre services.

Lorsque vous executez docker compose up, Compose lit le fichier YAML, cree un reseau Docker dedie pour l'application, construit les images necessaires (si des Dockerfiles sont references), puis demarre les conteneurs dans l'ordre defini par les dependances. Les services communiquent entre eux via le reseau interne en utilisant leurs noms de service comme noms d'hote DNS.

Compose gere egalement le cycle de vie des conteneurs : docker compose down arrete et supprime les conteneurs et reseaux, docker compose logs affiche les journaux de tous les services, docker compose exec permet d'executer des commandes dans un conteneur en cours d'execution. Pour un projet Django, cela signifie pouvoir lancer des migrations, ouvrir un shell ou executer des tests sans quitter l'ecosysteme Compose.

Exemple concret

Chez Kern-IT, nous utilisons Docker Compose pour chaque projet client. Prenons l'exemple d'une plateforme de gestion immobiliere developpee en Django. Le fichier docker-compose.yml definit quatre services : le serveur Django (avec Gunicorn), une base PostgreSQL, un broker Redis et un worker Celery pour les taches asynchrones comme l'envoi d'emails et la generation de rapports PDF.

En developpement, les developpeurs lancent docker compose up et disposent instantanement de l'ensemble de la pile. Les fichiers sources sont montes en volume, ce qui permet le rechargement automatique du serveur Django a chaque modification de code. En CI/CD, le meme fichier Compose est utilise pour lancer les tests d'integration dans un environnement identique a la production.

Mise en oeuvre

  1. Installer Docker et Compose : Docker Compose est integre dans Docker Desktop (macOS, Windows) et disponible comme plugin CLI sur Linux. Verifiez l'installation avec docker compose version.
  2. Creer le fichier docker-compose.yml : definissez chaque service avec son image, ses ports, ses volumes et ses variables d'environnement. Commencez par le service principal (votre application) puis ajoutez les services auxiliaires.
  3. Definir les dependances : utilisez depends_on pour specifier l'ordre de demarrage. Pour un projet Django, le service web depend de la base de donnees et de Redis.
  4. Gerer les variables d'environnement : utilisez un fichier .env pour les secrets et les configurations specifiques a l'environnement. Ne versionnez jamais ce fichier ; fournissez un .env.example comme modele.
  5. Configurer les volumes : montez le code source en volume pour le developpement (rechargement a chaud) et utilisez des volumes nommes pour les donnees persistantes (base de donnees).
  6. Tester et iterer : lancez docker compose up --build pour reconstruire les images apres des modifications du Dockerfile, et docker compose down -v pour repartir d'un etat propre si necessaire.

Technologies et outils associes

  • Docker : moteur de conteneurisation sur lequel repose Compose.
  • Kubernetes : orchestrateur pour la production, la ou Compose gere le developpement local.
  • Nginx : reverse proxy souvent defini comme service dans un fichier Compose.
  • PostgreSQL : base de donnees frequemment orchestree via Compose pour le developpement.
  • Redis : broker de messages et cache, service classique dans un Compose Django.
  • Celery : worker de taches asynchrones, lance comme service independant dans Compose.

Conclusion

Docker Compose est un outil indispensable pour tout projet multi-services. En formalisant la configuration de l'environnement dans un fichier YAML versionne, il garantit la reproductibilite, accelere l'onboarding des developpeurs et simplifie les tests d'integration. Chez Kern-IT, chaque projet Django inclut un fichier Compose qui orchestre l'application, la base de donnees, Redis et Celery, permettant a notre equipe de se concentrer sur le code metier plutot que sur la configuration d'infrastructure. Pour les entreprises belges qui cherchent a professionnaliser leur workflow de developpement, Docker Compose est un premier pas concret et accessible vers l'automatisation de l'infrastructure.

Conseil Pro

Utilisez des profils Docker Compose (profiles) pour separer les services de developpement des services de debug ou de monitoring. Par exemple, definissez un profil debug pour un conteneur pgAdmin ou Mailhog, qui ne sera lance que lorsque vous en avez besoin avec docker compose --profile debug up.

Un projet en tête ?

Discutons de comment nous pouvons vous aider à concrétiser vos idées.