🔝 Retour au Sommaire
Bienvenue dans le chapitre consacré à Docker Compose ! 🎉
Jusqu'à présent, vous avez appris à travailler avec des conteneurs Docker individuels : créer des images, lancer des conteneurs, gérer les volumes et les réseaux. Mais que se passe-t-il lorsque votre application devient plus complexe et nécessite plusieurs conteneurs qui doivent travailler ensemble ?
Imaginez une application web moderne typique :
- Un serveur web (Nginx) pour servir le frontend
- Une application backend (Node.js, Python, Java...)
- Une base de données (PostgreSQL, MySQL, MongoDB...)
- Un système de cache (Redis)
- Peut-être une file de messages (RabbitMQ)
Gérer tous ces conteneurs manuellement avec des commandes docker run devient rapidement un cauchemar :
- Des commandes longues et complexes à mémoriser
- La difficulté de gérer les dépendances entre les services
- Le risque d'erreurs à chaque démarrage
- L'impossibilité de partager facilement votre configuration avec votre équipe
C'est exactement le problème que Docker Compose résout ! ✨
Docker Compose est un outil qui vous permet de définir et gérer des applications Docker multi-conteneurs. Au lieu de lancer vos conteneurs un par un avec des commandes complexes, vous décrivez toute votre application dans un simple fichier de configuration (docker-compose.yml), puis vous la démarrez avec une seule commande.
Un seul fichier. Une seule commande. Toute votre application.
# Créer un réseau
docker network create mon-app-network
# Lancer la base de données
docker run -d \
--name ma-base \
--network mon-app-network \
-v donnees-db:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=secret \
postgres:15
# Lancer Redis
docker run -d \
--name mon-cache \
--network mon-app-network \
redis:7
# Lancer l'application
docker run -d \
--name mon-api \
--network mon-app-network \
-p 3000:3000 \
-e DATABASE_URL=postgresql://ma-base:5432 \
-e REDIS_URL=redis://mon-cache:6379 \
mon-image-api
# Et il faut se souvenir de tout ça !# docker-compose.yml
services:
database:
image: postgres:15
environment:
POSTGRES_PASSWORD: secret
volumes:
- donnees-db:/var/lib/postgresql/data
cache:
image: redis:7
api:
image: mon-image-api
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://database:5432
REDIS_URL: redis://cache:6379
depends_on:
- database
- cache
volumes:
donnees-db:Puis simplement :
docker compose upMagique, n'est-ce pas ? 🪄
Une seule commande pour démarrer toute votre application, au lieu de gérer chaque conteneur individuellement.
Votre fichier docker-compose.yml peut être versionné avec Git et partagé avec votre équipe. Tout le monde aura exactement le même environnement de développement.
Le fichier docker-compose.yml documente votre architecture. Un nouveau développeur peut comprendre immédiatement de quels services l'application est composée.
Chaque projet peut avoir son propre environnement Docker Compose, évitant les conflits entre projets.
Que vous soyez sur Windows, macOS ou Linux, votre application fonctionnera de la même manière.
Ce chapitre est structuré pour vous emmener progressivement de débutant à utilisateur confiant de Docker Compose :
Vous découvrirez en détail ce qu'est Docker Compose, comment il fonctionne, et pourquoi c'est un outil essentiel pour tout développeur travaillant avec Docker.
Vous apprendrez à écrire et comprendre un fichier docker-compose.yml. Nous explorerons toutes les sections importantes et les options de configuration disponibles.
Vous verrez comment créer des applications complètes avec plusieurs services qui communiquent entre eux : bases de données, APIs, workers, caches, et plus encore.
Vous maîtriserez les techniques pour gérer l'ordre de démarrage et vous assurer que vos services démarrent de manière fiable, en particulier avec les bases de données.
Vous découvrirez toutes les commandes essentielles pour gérer votre application au quotidien : up, down, logs, ps, et bien d'autres.
Docker Compose est utilisé dans de nombreux scénarios :
Frontend React + Backend Node.js + PostgreSQL + Redis
Démarrez tout votre environnement de développement en une commande, avec hot-reload et debugging.
Application + Base de données de test + Services externes mockés
Créez des environnements de test isolés et reproductibles pour votre CI/CD.
Stack complète : Nginx + Application + Base de données + Monitoring
Déployez rapidement une démo complète de votre application pour un client ou une présentation.
Service Auth + Service Users + Service Products + API Gateway + Base de données
Orchestrez plusieurs microservices localement pour le développement et les tests.
Avant de commencer ce chapitre, assurez-vous d'être à l'aise avec :
✅ Les concepts de base de Docker (images, conteneurs)
✅ Les commandes Docker essentielles (docker run, docker build)
✅ Les volumes Docker pour la persistance des données
✅ Les réseaux Docker pour la communication entre conteneurs
Si vous avez suivi les chapitres précédents de cette formation, vous avez déjà toutes les connaissances nécessaires !
Bonne nouvelle ! Si vous avez installé Docker Desktop (Windows ou macOS), Docker Compose est déjà inclus. Vous n'avez rien d'autre à installer.
Sur Linux, Docker Compose est généralement inclus avec Docker Engine dans les versions récentes.
Pour vérifier que Docker Compose est installé :
docker compose versionSi vous voyez un numéro de version (par exemple Docker Compose version v2.23.0), vous êtes prêt à commencer ! 🚀
Pour vous donner un avant-goût, voici à quoi ressemble un fichier Docker Compose complet pour une application WordPress :
services:
# Base de données MySQL
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
volumes:
- db_data:/var/lib/mysql
# Application WordPress
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wordpress
depends_on:
- db
volumes:
- wp_data:/var/www/html
volumes:
db_data:
wp_data:Avec ces quelques lignes et la commande docker compose up -d, vous avez un site WordPress complet qui tourne !
Lisez les sections dans l'ordre. Chaque section s'appuie sur les précédentes et introduit progressivement de nouveaux concepts.
Vous pouvez sauter directement aux sections qui vous intéressent, comme la gestion des dépendances (8.4) ou les commandes avancées (8.5).
Bien que ce tutoriel n'inclue pas d'exercices formels, nous vous encourageons vivement à :
- Créer vos propres fichiers
docker-compose.ymlpendant votre lecture - Tester les exemples donnés
- Expérimenter avec différentes configurations
- Casser des choses (c'est comme ça qu'on apprend !)
La meilleure façon d'apprendre Docker Compose est de l'utiliser ! 💪
Les exemples de code YAML seront formatés ainsi :
services:
mon-service:
image: nginxLes commandes à taper dans votre terminal seront formatées ainsi :
docker compose up -dLes informations critiques seront mises en évidence :
✅ Conseil : Bonnes pratiques recommandées
💡 Astuce : Astuces pour gagner du temps
Docker Compose peut sembler intimidant au début, mais gardez à l'esprit :
-
C'est normal de ne pas tout comprendre immédiatement - Docker Compose a beaucoup d'options, mais vous n'avez besoin que d'un sous-ensemble pour commencer.
-
Les erreurs font partie de l'apprentissage - Vous allez faire des erreurs de syntaxe YAML, oublier des deux-points, mal indenter votre fichier. C'est normal et c'est comme ça qu'on apprend !
-
Commencez simple - Ne créez pas immédiatement une architecture de 15 services. Commencez par 2-3 services et augmentez progressivement la complexité.
-
La documentation est votre amie - N'hésitez pas à consulter la documentation officielle de Docker Compose pour des détails supplémentaires.
-
La communauté est là - Des millions de développeurs utilisent Docker Compose. Si vous avez un problème, quelqu'un l'a probablement déjà résolu !
✅ Créer des fichiers docker-compose.yml pour vos projets
✅ Orchestrer plusieurs services qui communiquent entre eux
✅ Gérer les dépendances et l'ordre de démarrage
✅ Utiliser les commandes essentielles pour gérer vos applications
✅ Déboguer les problèmes courants
✅ Appliquer les bonnes pratiques pour des configurations robustes
✅ Créer des environnements de développement reproductibles
Docker Compose va transformer votre façon de travailler avec Docker. Au lieu de jongler avec des dizaines de commandes, vous allez pouvoir gérer des applications complexes avec élégance et simplicité.
Tournons la page et plongeons dans le vif du sujet ! 🏊♂️
Prochaine section : 8.1 Introduction à Docker Compose - Découvrons en détail cet outil puissant !