Ce que vous allez faire
À l’issue de ce tutoriel vous disposerez d’un fichier compose.yaml qui démarre une stack web complète avec base de données, reverse proxy et persistance des données. L’ensemble se lance en une seule commande et redémarre automatiquement après un reboot du serveur.
Prérequis
- Docker Engine 24+ et Docker Compose v2 installés
- Accès root ou appartenance au groupe docker
- Terminal ouvert et connexion SSH active
- 20 minutes estimées
Étape 1 — Créer le fichier compose.yaml
Créez un répertoire dédié et initialisez le fichier de définition. Ce fichier décrit l’ensemble des services et leurs relations, ce qui permet à Docker Compose d’orchestrer plusieurs services en un seul coup.
mkdir -p ~/stack && cd ~/stack && touch compose.yamlÉtape 2 — Définir les services et variables d'environnement
Ajoutez trois services : base de données, application et reverse proxy. Les variables d’environnement sont externalisées dans un fichier .env pour faciliter les changements sans modifier le compose.yaml.
services:
db:
image: postgres:16
env_file: .env
volumes:
- db_data:/var/lib/postgresql/data
app:
image: node:20-alpine
env_file: .env
command: node server.js
depends_on:
db:
condition: service_healthy
proxy:
image: nginx:alpine
ports:
- "80:80"
depends_on:
- app
volumes:
db_data:Étape 3 — Configurer les dépendances avec depends_on
La clé depends_on garantit l’ordre de démarrage. Ici l’application n’attend que la base de données soit prête grâce à la condition healthcheck.
depends_on:
db:
condition: service_healthyÉtape 4 — Ajouter des healthchecks
Un healthcheck permet à Docker de savoir quand un conteneur est réellement opérationnel avant de démarrer les services qui en dépendent.
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5Étape 5 — Gérer la persistance des données
Le volume nommé db_data assure que les données survivent à la suppression du conteneur. Sans volume, la base serait réinitialisée à chaque redémarrage.
docker compose up -dVérifier que tout fonctionne
docker compose ps
docker compose logs --tail=20Erreurs fréquentes
Le service app reste en starting
Le healthcheck de la base échoue. Vérifiez les credentials dans .env et augmentez le nombre de retries.
Port 80 déjà utilisé
Changez le port publié dans la section ports du service proxy ou arrêtez le serveur web local.
Les données disparaissent après docker compose down
Vous avez utilisé docker compose down -v. Supprimez uniquement le flag -v pour conserver les volumes nommés.
Aller plus loin
Intégrez ce compose.yaml dans un pipeline CI/CD, ajoutez des profils pour les environnements de test et production, puis passez à l’orchestration multi-nœuds avec Docker Swarm ou Kubernetes.
Se former avec Learni
Formation Docker Compose : déploiement simplifié d'applications multi-conteneurs
Développeurs, administrateurs systèmes, DevOps souhaitant automatiser et simplifier le déploiement d'environnements applicatifs complexes grâce à Docker Compose. Niveau Intermédiaire. Présentiel. 3 journées. Prérequis : connaissance de base de Docker. Lien formation
Formation Docker Compose - Orchestrer stacks multi-conteneurs avancés
Ingénieurs DevOps, architectes cloud, développeurs seniors en conteneurs. Niveau Expert. Présentiel. 3 journées. Prérequis : maîtrise avancée de Docker CLI et Dockerfile. Lien formation
Formation Docker Compose - Orchestrer apps multi-conteneurs efficacement
Ingénieurs DevOps, développeurs fullstack, architectes cloud. Niveau Avancée. Présentiel. 3 journées. Prérequis : maîtrise de Docker et notions avancées de YAML. Lien formation
FAQ
Comment vérifier que la base de données est prête avant l’application ?
Utilisez depends_on avec condition: service_healthy et définissez un healthcheck dans le service db du compose.yaml.
Où placer les variables d’environnement pour docker compose ?
Créez un fichier .env à la racine du projet et référencez-le avec env_file dans chaque service du compose.yaml.
Les volumes nommés survivent-ils à docker compose down ?
Oui, tant que vous n’ajoutez pas l’option -v. Les données restent dans le volume db_data.
Peut-on utiliser docker compose sur un serveur Windows ?
Oui, via WSL2 ou Docker Desktop. Le fichier compose.yaml reste identique.
Cet article vous a-t-il été utile ?
Notez-le de 1 à 5 étoiles.
Commentaires
Une question sur cet article, un retour d'expérience ? Lancez la discussion.





