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.