Le fichier que vous allez écrire au prochain guide est écrit en YAML, un format de texte pensé pour rester lisible par un humain, contrairement au JSON par exemple, qui multiplie accolades et guillemets. Quatre règles suffisent pour la suite de ce parcours.

Règle 1 : une clé, deux points, une valeur

Un nom suivi de deux points et d'un espace, puis une valeur : c'est la structure la plus fréquente de tout le fichier.

Règle 2 : l'indentation remplace les accolades

Ici, nom et port appartiennent à application, uniquement parce qu'ils sont indentés en dessous, avec deux espaces. YAML n'utilise ni accolades ni parenthèses pour indiquer cette appartenance : seul l'alignement du texte compte.

Toujours des espaces, jamais de tabulation

YAML refuse les tabulations pour l'indentation : seuls des espaces sont autorisés. La plupart des éditeurs de code modernes convertissent automatiquement la touche Tab en espaces dans un fichier YAML, mais si le vôtre ne le fait pas, une simple erreur d'indentation suffit à rendre tout le fichier invalide.

Règle 3 : un tiret introduit un élément de liste

Un tiret suivi d'un espace introduit un élément d'une liste, ici une liste qui ne contient qu'un seul élément pour l'instant. Vous ajouterez plusieurs tirets, un par ligne, dès qu'une liste devra contenir plusieurs valeurs.

Règle 4 : les guillemets sont parfois nécessaires

Remarquez, dans l'exemple précédent, les guillemets autour de "3000:3000". YAML interprète parfois un texte contenant des deux-points comme une nouvelle structure clé-valeur imbriquée, ce qui n'est pas l'intention ici. Mettre ce genre de valeur entre guillemets évite toute ambiguïté. Ce n'est pas systématique, mais c'est un bon réflexe dès qu'une valeur contient un caractère spécial comme :.

C'est déjà suffisant

Ces quatre règles, clé-valeur, indentation, listes, guillemets ponctuels, couvrent l'intégralité du YAML utilisé dans ce parcours. Le guide suivant les met immédiatement en pratique sur un vrai fichier Compose.

Vérifiez que vous avez compris

Dans un fichier YAML, deux lignes voisines ont-elles un lien hiérarchique si elles ont exactement le même niveau d'indentation ?

Non, c'est l'inverse : deux lignes au même niveau d'indentation sont au même niveau hiérarchique, sans relation de parenté entre elles. C'est une ligne moins indentée, juste au-dessus, qui devient le parent des lignes indentées en dessous d'elle.