DOCKER - 6 2 Docker Compose fichier YAML

Le fichier docker-compose.yml commence par déclarer une version (ex. version: '3.1'). Sans elle, Docker applique la version 1 par défaut, ce qui limite les fonctionnalités. Les sections principales sont services, volumes et networks. Le fichier utilise une syntaxe YAML hiérarchique : indentation par espaces (2 ou 4), pas de tabs. Un éditeur moderne (VS Code) valide automatiquement la syntaxe YAML.

La section services défini chaque conteneur. Chaque service a un nom (votre choix : pas besoin que ce soit le nom de l'image). Sous ce nom, vous spécifiez l'image, les commandes à exécuter, les ports exposés, les variables d'environnement, les volumes et autres options. Tout ce que vous passeriez à docker run via flags se déclare ici. Si vous avez plusieurs instances du même service, le nom devient le DNS interne du réseau Docker.

Pour les variables d'environnement, utilisez un format clé-valeur simple (une par ligne), pas de tirets. Pour les listes (volumes, ports, labels), utilisez des tirets. Par exemple : ports: (plural) suivi de - "8080:8080". Les sections volumes et networks sont optionnelles mais utiles pour partager des données et gérer le réseau entre services.

Consulter docs.docker.com pour la documentation complète du fichier Compose : elle liste chaque clé, ses valeurs autorisées et des exemples. La CLI docker-compose up et docker-compose down gère tout le reste à partir de ce fichier unique.

En résumé

Cette leçon explique la structure complète d'un fichier docker-compose YAML. Vous découvrirez les trois sections principales (services, volumes, réseaux), la déclaration de version, et comment formater correctement votre configuration. Le fichier docker-compose remplace les scripts shell répétitifs et offre une meilleure documentation de vos déploiements de conteneurs.

Points clés

  • La version YAML (ex: 3.1) doit être déclarée au début du fichier, sinon elle est par défaut à la version 1 (non recommandé) qui perd des fonctionnalités.
  • Les trois sections principales sont services (conteneurs), volumes (stockage persistant) et réseaux (communication entre conteneurs), avec une indentation cohérente obligatoire.
  • Un service est l'équivalent d'une commande `docker run`; vous pouvez spécifier l'image, les variables d'environnement, les ports et les volumes à cet endroit.
  • Docker Compose utilise le point (.) pour représenter le répertoire courant dans les chemins, simplifiant la gestion des Bind mounts.
  • Les configurations multi-valeurs (ports, volumes, environnement) utilisent un format de liste avec tirets, tandis que les configurations simple clé-valeur n'en ont pas.
  • Le fichier docker-compose est bien documenté par Docker sur docs.docker.com, avec la description de chaque clé et ses options possibles.

Questions fréquentes

Pourquoi utiliser docker-compose au lieu de taper les commandes docker run?

Docker-compose remplace les scripts shell répétitifs et permet de sauvegarder toute votre configuration d'exécution (image, volumes, ports, variables d'environnement) dans un fichier structuré, plus facile à lire, à maintenir et à documenter.

Que signifie 'services' dans docker-compose?

Les services sont des conteneurs que vous créez. Ils s'appellent 'services' car vous pouvez avoir plusieurs instances identiques du même conteneur à des fins de redondance, où chaque instance fournit un service à l'application.

Pourquoi indenter avec un nombre d'espaces cohérent dans YAML?

YAML est hiérarchique et l'indentation (2 ou 4 espaces, mais doit être consistant) définit la structure et les relations entre les éléments. Les éditeurs modernes qui supportent YAML gèrent automatiquement ce formatage.