Lancer des conteneurs avec docker run c'est bien pour tester, mais en production, c'est ingérable. Imaginez devoir taper 15 lignes de commande pour lancer un site web et sa base de données... Docker Compose permet de décrire toute votre architecture dans un seul fichier YAML. Bienvenue dans le monde de l'Infrastructure as Code.
1. Le concept
Docker Compose est un outil qui permet de définir et lancer des applications multi-conteneurs. Au lieu de scripts Bash, on utilise un fichier docker-compose.yml qui contient la recette complète de votre infrastructure.
2. Installation
Si vous avez suivi mon tutoriel précédent pour installer Docker, bonne nouvelle : le plugin Compose est déjà inclus.
# Vérification de la version
docker compose version
Note : On utilise désormais la commande docker compose (V2) et non plus l'ancien binaire docker-compose (V1).
3. Cas pratique : Une Stack WordPress complète
Nous allons déployer en une seule commande :
- Une base de données MariaDB.
- Un serveur WordPress connecté à cette base.
- Une interface PHPMyAdmin pour gérer la base visuellement.
A. Préparation
mkdir mon-wordpress
cd mon-wordpress
nano docker-compose.yml
B. Le fichier docker-compose.yml
Copiez ce contenu. C'est le cœur de l'orchestration.
services:
# SERVICE 1 : La Base de données
db:
image: mariadb:10.6
restart: always
volumes:
- db_data:/var/lib/mysql # Persistance des données
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: userpassword
networks:
- wp-network
# SERVICE 2 : L'application WordPress
wordpress:
image: wordpress:latest
depends_on:
- db # Attend que la DB soit prête
ports:
- "8080:80" # Accessible sur http://localhost:8080
restart: always
environment:
WORDPRESS_DB_HOST: db # Nom du service ci-dessus
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: userpassword
WORDPRESS_DB_NAME: wordpress
networks:
- wp-network
# SERVICE 3 : Interface de gestion DB
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- db
ports:
- "8888:80" # Accessible sur http://localhost:8888
environment:
PMA_HOST: db
networks:
- wp-network
# Déclaration des volumes
volumes:
db_data:
# Déclaration des réseaux
networks:
wp-network:
4. Analyse technique (Pour comprendre)
Ce fichier contient plusieurs notions clés pour un SysAdmin :
- Services : Ce sont nos conteneurs. Ici
db,wordpressetphpmyadmin. - Networks : Remarquez que WordPress se connecte à l'hôte
db. Docker possède son propre DNS interne ! Pas besoin de connaitre les adresses IP, les conteneurs se trouvent par leur nom de service. - Volumes : Le volume
db_dataest stocké par Docker sur l'hôte. Si vous détruisez les conteneurs, la base de données survit. - Environment : On injecte la configuration (mots de passe) directement au démarrage.
5. Lancement de la Stack
C'est ici que la magie opère. Une seule commande suffit pour tout construire :
docker compose up -d
L'option -d (Detached) rend la main immédiatement.
Rendez-vous sur :
- Votre site :
http://votre-ip:8080 - PHPMyAdmin :
http://votre-ip:8888
6. Commandes utiles au quotidien
Arrêter toute la stack (sans perdre les données) :
docker compose stop
Détruire la stack (arrête et supprime les conteneurs) :
docker compose down
Voir les logs de tous les services en même temps (super pratique pour le debug) :
docker compose logs -f
Conclusion
Avec Docker Compose, votre infrastructure devient portable. Vous pouvez envoyer ce fichier docker-compose.yml à un collègue, il tape docker compose up -d, et il a exactement le même environnement que vous. C'est la base du travail en équipe moderne.