📚 Docker pour les débutants : Le Chantier Naval

5.3 : Syntaxe YAML : Traduire nos docker run en services

📄 Article ⏱ 5 ✅ Gratuit

Maintenant que nous avons une structure de projet propre (/app, /data, /conf) et que Docker Compose est installé, il est temps d’apprendre à traduire vos commandes docker run en services YAML.

L’objectif : passer de multiples commandes individuelles à un fichier descriptif unique qui décrit toute la stack.

Rappel : Exemple d’un docker run simple

Supposons que nous voulons lancer MariaDB :

docker run -d \
--name mariadb \
-e MYSQL_ROOT_PASSWORD=secret \
-v ./data/mariadb:/var/lib/mysql \
--network monprojet-network \
mariadb:10.11

Pour Apache/PHP :

docker run -d \
--name php-web \
-p 8080:80 \
-v ./app:/var/www/html \
--network monprojet-network \
php:8.2-apache

Vous imaginez rapidement que si vous avez 5 ou 6 conteneurs, ça devient compliqué.

Traduction en YAML Docker Compose

Voici comment les mêmes services se traduisent dans docker-compose.yml :

services:
mariadb:
image: mariadb:10.11
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} # récupéré depuis .env
volumes:
- ./data/mariadb:/var/lib/mysql
networks:
- monprojet-network

php-web:
image: php:8.2-apache
container_name: php-web
ports:
- "8080:80"
volumes:
- ./app:/var/www/html
networks:
- monprojet-network

networks:
monprojet-network:
driver: bridge

Explications

Élément YAMLRôle
services:Déclare tous les conteneurs (services) de la stack.
image:L’image Docker à utiliser.
container_name:Nom du conteneur (optionnel mais pratique).
environment:Variables d’environnement (on peut utiliser .env).
volumes:Montage des dossiers locaux dans le conteneur.
ports:Mapping des ports hôte → conteneur.
networks:Définition des réseaux utilisés par le conteneur.
networks: à la finDéclaration du réseau si nécessaire (bridge, overlay…).

Astuce : la lecture du YAML se fait du haut vers le bas, et chaque indentation est critique. Deux espaces sont recommandés.

Points clés

  • docker-compose.yml remplace toutes vos commandes docker run.
  • L’utilisation de .env permet de ne pas coder les mots de passe ou ports en dur.
  • Le YAML est lisible et modifiable facilement, idéal pour versionner votre projet.
  • Vous pouvez maintenant lancer la stack complète avec :
docker compose up -d
  • Et tout arrêter avec :
docker compose down

📌 À retenir

  • Docker Compose simplifie la gestion multi-conteneurs en YAML.
  • Chaque docker run devient un service dans le YAML.
  • Les variables dynamiques passent dans .env.
  • L’organisation des dossiers (/app, /data, /conf) s’intègre naturellement au YAML.