En savoir plus
Compose
L'histoire de Fig et de YAML : pour comprendre d'où vient
la partition et pourquoi elle s'écrit ainsi.
420-5A4-MT · Serveurs évolutifs · Compose
D'où vient Compose ?
Genèse · 2014
Un petit outil londonien nommé Fig
Compose est né en 2013 sous le nom de
Fig, créé par Orchard, une jeune entreprise de Londres.
Fig a inventé le fichier fig.yml et la commande fig up : décrire une
application multi-conteneurs dans un seul fichier. Docker a racheté Orchard
en 2014 : Fig est devenu docker-compose.
🌱 1. Fig & Orchard (2013)
Le pionnier : fig.yml et fig up,
l'idée de décrire l'application entière dans un fichier.
⚙️ 2. docker-compose (2014)
L'outil en Python, avec son trait
d'union, installé à part du moteur Docker.
🚀 3. Compose v2 (2021)
Réécrit en Go et intégré au client :
docker compose, sans trait d'union.
✦ L'idée de Fig a survécu à tous ses noms : décrire l'état
voulu dans un fichier, et laisser l'outil s'arranger pour y arriver.
D'où vient YAML ?
Genèse · 2001
YAML Ain't Markup Language
YAML est né en 2001, pensé pour être
lisible par les humains d'abord. Son acronyme est une blague
récursive : « YAML Ain't Markup Language » : ce n'est pas un langage de
balisage, c'est un format pour décrire des données.
📖 1. Lisible d'abord
Pas de chevrons ni d'accolades :
l'indentation porte la structure, comme en Python.
🧩 2. Un sur-ensemble de JSON
Tout document JSON valide est aussi
du YAML valide : les deux mondes se parlent.
🌍 3. La langue de l'infrastructure
Compose, Kubernetes, Ansible, les
chaînes CI : l'infrastructure moderne se décrit en YAML.
✦ La règle qui ne pardonne pas : deux espaces, jamais de
tabulations : le tabulateur est interdit par la spécification YAML.
Sous le capot de docker compose up
Mécanismes
Ce que up fait sans le dire
Une seule commande, plusieurs opérations invisibles :
Compose prépare la scène avant de lever le rideau.
🕸️ 1. Le réseau du projet
Compose crée un réseau privé nommé
selon le projet; chaque service y entre automatiquement.
📛 2. Le DNS par nom de service
Sur ce réseau, web trouve
basededonnees par son nom : c'est le DNS interne
de Docker.
🏷️ 3. Les étiquettes
Chaque conteneur reçoit des étiquettes
(com.docker.compose.project) : c'est ainsi que down sait
exactement quoi ranger.
✦ Le nom du projet vient du répertoire courant : deux
partitions dans deux répertoires ne se marchent jamais dessus.