Validateur YAML Docker Compose

Collez un fichier Compose pour afficher l’inventaire des services et les constats d’un linter structurel local. Le YAML est analysé dans le navigateur : rien n’est envoyé, aucun démon Docker n’est contacté et Compose n’est jamais exécuté.

Fonctionne localement dans votre navigateur
YAML Compose

Collez compose.yaml ou docker-compose.yml. L’analyse et les contrôles s’exécutent localement dans le navigateur.

C’est un linter structurel local. Il ne télécharge pas d’images, n’inspecte pas le démon Docker, ne résout pas les variables d’environnement et n’exécute pas Compose.

Constats
  • Validez un fichier Compose pour voir les contrôles locaux.
Inventaire des services
ServiceImage / buildPortsDépend de
Aucun fichier Compose validé pour le moment.

Comment valider un fichier Compose avant de lancer docker compose up

Collez un compose.yaml ou un docker-compose.yml puis cliquez sur Valider le fichier Compose. La page analyse le document dans le navigateur et affiche deux listes : les constats classés par gravité, chaque ligne indiquant le chemin de la clé concernée (par exemple services.db.ports[0]), et un inventaire des services avec l’image ou la source de build, les ports publiés et les cibles depends_on.

L’exemple intégré (api et db, chacun avec un volume nommé) ressort « prêt à relire », car rien n’empêche un docker compose up. En revanche, un port publié par deux services, un depends_on vers un service inexistant ou un cycle comme a → b → a sont signalés comme erreurs.

  1. Collez le fichier Compose dans le panneau de gauche. Un seul document YAML est lu ; le JSON équivalent est accepté, et les ancres, alias et clés de fusion sont pris en charge.
  2. Cliquez sur Valider le fichier Compose — ou sur Charger un exemple pour partir de l’échantillon à deux services, puis sur Effacer pour vider les panneaux avant le fichier suivant.
  3. Lisez d’abord les constats : chaque ligne porte un niveau de gravité, le chemin dans le fichier et une phrase d’explication. Les erreurs bloquent un lancement normal de Compose, les avertissements méritent un coup d’œil, les informations sont facultatives.
  4. Vérifiez l’Inventaire des services : image résolue ou source de build, ports publiés et liste depends_on de chaque service, y compris ceux qui n’héritent de leur image que par une clé de fusion.
  5. Corrigez le fichier, validez à nouveau et lisez la ligne de synthèse : « prêt à relire » signifie que les contrôles implémentés n’ont trouvé aucune erreur structurelle.

Ce que vérifie le linter Compose, et ce qu’il ne lit pas

Ce que couvrent les contrôles

Structure : services doit être un mapping avec au moins un service, chaque service doit être un objet, et les noms n’acceptent que lettres, chiffres, points, traits de soulignement et traits d’union — Compose refuse le reste. image doit être une chaîne non vide et build un chemin ou un objet ; un service sans l’un des deux est signalé, car il ne peut pas démarrer.

Ports : le port du conteneur doit être compris entre 1 et 65535, et le port publié peut être un nombre ou une plage comme 8000-8005. Le linter signale les valeurs hors plage, les ports non numériques, les protocoles autres que tcp, udp ou sctp, ainsi que tout port publié en double ou qui se chevauche, dans un même service comme entre deux services. network_mode: host avec des ports publiés ajoute un avertissement, car ces mappings sont ignorés à l’exécution.

Dépendances, volumes et clés de fusion

depends_on peut être une liste ou un mapping ; chaque cible doit exister et le graphe doit rester acyclique : a → b → a ou un service qui dépend de lui-même est signalé avec le cycle complet. container_name et privileged: true apparaissent en avertissement, car ils gênent la mise à l’échelle ou élargissent l’accès à l’hôte plus que nécessaire.

Les volumes nommés montés par un service doivent être déclarés dans le mapping volumes de premier niveau. L’analyseur local résout les ancres et les alias, et <<: *common est fusionné dans le service lorsqu’il pointe vers un mapping : une image qui n’arrive que par la clé de fusion figure donc quand même dans l’inventaire ; si la fusion ne peut pas être résolue, la ligne le dit au lieu d’annoncer une image manquante.

Ce que le linter ne fait pas

Rien n’est exécuté : la page ne lance jamais docker compose, ne contacte aucun démon Docker et ne télécharge aucune image. Les variables telles que ${POSTGRES_PASSWORD} ne sont pas résolues, les fichiers .env ne sont pas lus, et profiles ou extends ne sont contrôlés que comme structure. Les différences entre versions de Compose ne sont pas simulées : vérifiez le fichier final avec la version que vous déployez.

Le document est analysé dans votre navigateur : le texte collé n’est pas envoyé et la validation fonctionne hors ligne. Les fichiers très volumineux dépendent de la mémoire de votre appareil, et un seul document est lu à la fois — un fichier contenant un second document --- est refusé avec son numéro de ligne.

Outils récents :