referJournal

8 October 2026

Docker Compose : environnements multi-conteneurs

Apprenez à orchestrer des applications multi-conteneurs avec Docker Compose. Définissez des services, des réseaux et des volumes dans un seul fichier docker-compose.yml, puis démarrez l'ensemble de vos conteneurs en une seule commande.

Par Refer·4 min de lecture

Docker Compose : environnements multi-conteneurs

Introduction

Construire une application moderne, ce n’est plus seulement développer des fonctionnalités : c’est aussi orchestrer un ensemble de services qui communiquent entre eux. Une interface web, une API, une base de données, un cache Redis, une file de messages… Tout cela dans un environnement reproductible et partageable. Docker Compose est l’outil qui rend ce travail simple.

Si Docker vous permet de lancer un conteneur, Docker Compose vous permet de lancer et de coordonner plusieurs conteneurs depuis un seul fichier de configuration. Dans cet article, nous allons voir comment définir, exécuter et gérer un environnement multi-conteneurs avec Docker Compose.

Pourquoi Docker Compose ?

Docker seul excelle pour lancer un conteneur. Mais dès que votre application devient composée de plusieurs services, la gestion manuelle devient vite lourde : il faut lancer chaque image, mémoriser les ports, les variables d’environnement, les réseaux, et vous retrouvez avec une commande par service.

Docker Compose résout ce problème en vous permettant de décrire votre architecture complète dans un fichier docker-compose.yml (ou compose.yaml). À partir de ce fichier, une seule commande construit et démarre tous les services en respectant leurs dépendances.

Définir un environnement multi-conteneurs

Imaginons un site web simple composé d’un service web et d’une base de données. Voici un fichier docker-compose.yml typique :

services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Ce fichier décrit deux services : web, construit à partir du Dockerfile du répertoire courant, exposé sur le port 3000 ; et db, une image PostgreSQL, avec un volume nommé pour persister les données.

Les commandes principales

Une fois le fichier docker-compose.yml en place, les commandes suivantes vous permettront de gérer votre environnement :

  • docker compose up -d : construit les images et démarre les conteneurs en arrière-plan.
  • docker compose ps : liste les conteneurs du projet et leur état.
  • docker compose logs -f : affiche les logs de tous les services en temps réel.
  • docker compose exec web sh : ouvre un shell dans le conteneur web.
  • docker compose down : arrête et supprime les conteneurs, réseaux et volumes.

Variables d’environnement et fichiers .env

Pour ne pas exposer les mots de passe en clair, utilisez des variables d’environnement. Créez un fichier .env à la racine du projet :

POSTGRES_PASSWORD=securite
DATABASE_URL=postgresql://user:password@db:5432/app

Et référencez-le dans votre fichier Compose :

db:
  image: postgres:15-alpine
  env_file:
    - .env

Docker Compose charge automatiquement les variables du fichier .env à la racine du projet. Vous pouvez aussi surcharger ces valeurs via votre propre environnement.

Volumes et persistance des données

Par défaut, les données d’un conteneur disparaissent à sa suppression. Pour conserver les données (base de données, fichiers générés), utilisez des volumes nommés ou des montages depuis l’hôte.

Dans l’exemple ci-dessus, le volume db-data associe le répertoire /var/lib/postgresql/data du conteneur à un volume géré par Docker, afin que les données persistent après l’arrêt du conteneur.

Docker Compose en CI/CD

Docker Compose s’intègre parfaitement aux pipelines d’intégration continue. Vous pouvez lancer votre environnement de test, exécuter les tests, puis le détruire, grâce à une configuration partagée entre le développement local et la CI.

Par exemple, un pipeline peut exécuter :

docker compose up -d
docker compose exec -T web npm test
docker compose down

Une fois le test passé, le contenu est prêt pour le déploiement, que ce soit sur Kubernetes, un fournisseur cloud ou un serveur bare-metal.

Conclusion

Docker Compose est l’allié indispensable pour développer et tester des applications composées de plusieurs services. En définissant vos services, réseaux et volumes dans un seul fichier, vous obtenez un environnement reproductible qui tourne de la machine de développeur à la CI, sans effort.

FAQ

Docker Compose est-il différent de Docker ? Oui. Docker gère un conteneur à la fois ; Docker Compose orchestre plusieurs conteneurs via un fichier de configuration.

Fichier docker-compose.yml ou compose.yaml ? Les deux sont acceptés. Docker Compose recherche d’abord compose.yaml, puis docker-compose.yml.

Un service peut-il dépendre d’un autre ? Oui, via depends_on pour l’ordre de démarrage et links pour la résolution de noms.

Comment modifier un service déjà démarré ? Rechargez la configuration avec docker compose up -d --build pour reconstruire et redémarrer.

Puis-je utiliser Docker Compose en production ? Pour des charges légères, oui. Pour la production, Kubernetes ou Docker Swarm sont plus adaptés.

Points clés

  • Docker Compose orchestre plusieurs conteneurs depuis un fichier unique.
  • Définissez services, réseaux et volumes dans docker-compose.yml.
  • Utilisez docker compose up -d pour démarrer l’ensemble.
  • Stockez les configurations sensibles dans un fichier .env.
  • Les volumes nommés garantissent la persistance des données.
  • Compose facilite les tests et l’intégration continue.