5.3 : Syntaxe YAML : Traduire nos docker run en services

📚Docker pour les débutants : Le Chantier Naval
📄 Article⏱ 5 min✅ 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 YAML Rô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 fin Dé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.