Docker Compose est un outil permettant de définir et de lancer des applications multi‑conteneurs Docker. Grâce à un fichier docker-compose.yml, vous pouvez décrire l’ensemble des services (conteneurs), leurs images, leurs ports, leurs variables d’environnement, leurs volumes et leurs dépendances. Un simple docker compose up déploie toute l’application de manière reproductible.
version n’est plus obligatoire. Vous pouvez commencer directement par services: ou utiliser --- (début d’un document YAML). Les exemples ci‑dessous utilisent la syntaxe moderne, sans la ligne version.
docker-compose.yml moderne.Docker Compose est un outil d’orchestration simple qui permet de gérer des applications composées de plusieurs conteneurs.
docker-compose.ymlversion est optionnelle. Si vous utilisez une version récente de Docker Compose (≥ 2.0), vous pouvez omettre la ligne version: et commencer directement par services: ou par ---.
| Section | Rôle | Exemples |
|---|---|---|
| Services | Définition des conteneurs (nom, image, ports, variables...). | web: image: nginx:latest |
| Networks | Réseaux personnalisés pour isoler les services. | app-network |
| Volumes | Volumes nommés pour persister les données. | db-data |
-.: suivi d’un espace.--- est facultatif mais recommandé pour les puristes YAML.docker-compose.yml (syntaxe moderne, sans version)
services:
db:
image: mysql:8.0
container_name: wordpress_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
volumes:
- db-data:/var/lib/mysql
networks:
- wp-network
wordpress:
image: wordpress:latest
container_name: wordpress_app
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wordpress
volumes:
- wp-data:/var/www/html
networks:
- wp-network
depends_on:
- db
volumes:
db-data:
wp-data:
networks:
wp-network:
db-data et wp-data persistent entre les redémarrages.wp-network.version : syntaxe compatible avec les versions récentes de Docker Compose.| Commande | Description |
|---|---|
docker compose up -d | Lance tous les services en arrière‑plan. |
docker compose down | Arrête et supprime les conteneurs, réseaux (et volumes si -v). |
docker compose logs -f | Affiche les logs en temps réel. |
docker compose ps | Liste les conteneurs du projet. |
docker compose exec <service> bash | Ouvre un shell dans un conteneur. |
docker compose restart | Redémarre tous les services. |
./html:/var/www/html).<nom_projet>_default.mkdir ~/mon-projet-compose cd ~/mon-projet-compose nano docker-compose.yml
Collez l’exemple ci‑dessus, puis lancez :
docker compose up -d
Accédez à http://localhost:8080 pour voir WordPress.
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: wordpress_phpmyadmin
restart: always
ports:
- "8081:80"
environment:
PMA_HOST: db
PMA_PORT: 3306
networks:
- wp-network
PMA_HOST: db : se connecte à la base via le service db.PMA_PORT: 3306 : port par défaut de MySQL.wp-network est partagé avec la base et WordPress.Dans l’exemple WordPress, quel est le rôle du champ depends_on ?
depends_on définit l’ordre de démarrage des services. Ici, WordPress ne démarre que si la base db est déjà lancée.
Comment ajouter un service Redis à une stack existante ?
redis:
image: redis:alpine
container_name: app_redis
restart: always
networks:
- wp-network
1. Le fichier docker-compose.yml utilise la syntaxe YAML.
2. La commande docker compose up -d lance les conteneurs en arrière‑plan.
3. La section volumes permet de définir des volumes nommés.
4. La directive ports: - "8080:80" expose le port 80 du conteneur sur le port 8080 de l’hôte.
5. La commande docker compose down supprime les conteneurs, les réseaux, mais pas les volumes par défaut.
6. La ligne version: est obligatoire dans tous les fichiers docker-compose.yml.