Zum Hauptinhalt springen
S-EDV news

YAML-Validator

Docker-Compose-Datei, Kubernetes-Manifest oder Workflow einfügen: Das Tool zeigt die Fehlerstelle, schlägt Korrekturen vor und macht sichtbar, wie der Parser Ihr YAML versteht.

  • Läuft komplett in Ihrem Browser
  • Keine Daten an einen Server
  • Ohne Anmeldung, ohne Tracking

YAML-Eingabe

Ausgabe


        
      
Formatieren entfernt Kommentare und löst Anker (&name, *name) auf.

Prüfung

So liest ein Parser YAML

YAML beschreibt Daten über Einrückung statt über Klammern: schlüssel: wert bildet ein Mapping, Zeilen mit - bilden eine Liste. Nach dem Doppelpunkt muss ein Leerzeichen folgen, eingerückt wird ausschließlich mit Leerzeichen – Tabulatoren sind in der Einrückung nicht erlaubt. Wie weit Sie einrücken, ist frei, solange alle Einträge einer Ebene exakt gleich weit stehen. Üblich sind zwei Leerzeichen pro Ebene.

Docker Compose, Kubernetes, GitHub Actions und Ansible verwenden YAML. Ein Einrückungsfehler macht die Datei dabei oft nicht ungültig, sondern ändert ihre Bedeutung: Ein Schlüssel landet eine Ebene zu hoch oder zu tief und wird vom Programm stillschweigend ignoriert. Die Ansichten „JSON“ und „Struktur“ oben zeigen, wie der Parser Ihre Datei tatsächlich versteht.

Typische Fallen

EingabeProblemBesser
image nginxDoppelpunkt fehlt; der Parser meldet den Fehler oft erst in der nächsten Zeileimage: nginx
port:8080ohne Leerzeichen nach dem Doppelpunkt ist die Zeile ein Text, kein Schlüsselport: 8080
version: 1.10wird zur Zahl 1.1 – bekannt von Python-Versionen in CI-Workflowsversion: "1.10"
kennung: abc #1ab Leerzeichen und # beginnt ein Kommentar, der Wert ist nur abckennung: "abc #1"
land: noYAML-1.1-Parser lesen yes, no, on und off als Wahrheitswertland: "no"
zeit: 12:30YAML-1.1-Parser lesen den Wert als Zahl zur Basis 60 (750)zeit: "12:30"
- 22:22 unter portsnach YAML 1.1 die Zahl 1342 statt einer Port-Zuordnung- "22:22"

Das Tool prüft mit js-yaml, einem Parser nach YAML 1.2. Dort sind no und 22:22 gewöhnliche Texte. Parser nach der älteren Version 1.1 – etwa PyYAML – deuten sie anders; so wird dort auch der Schlüssel on eines GitHub-Actions-Workflows zu true. Setzen Sie Werte, die nicht als Zahl oder Wahrheitswert gemeint sind, deshalb in Anführungszeichen. Dann verstehen alle Parser dasselbe.

Fehlermeldungen und Korrekturvorschlag

Bei einem Syntaxfehler zeigt das Tool die Stelle mit Zeilennummern, übersetzt die Meldung des Parsers und nennt die wahrscheinliche Ursache. Eine häufige Ursache ist ein vergessener Doppelpunkt: Der Parser liest die Zeile dann als Fortsetzung eines Textes und stolpert erst eine Zeile später. Das Tool sucht deshalb oberhalb der gemeldeten Stelle nach Zeilen wie image nginx:1.27, ergänzt den Doppelpunkt und prüft erneut. Ist die korrigierte Fassung gültig, übernehmen Sie sie mit einem Klick.

Docker-Compose-Dateien prüfen

Enthält die Datei einen Abschnitt services:, prüft das Tool zusätzlich typische Schwächen von Compose-Dateien:

  • das veraltete Feld version, das aktuelle Docker-Compose-Versionen ignorieren,
  • Images ohne Tag oder mit :latest – welche Version läuft, hängt dann vom Zeitpunkt des Pulls ab,
  • Services ohne restart-Richtlinie (Standard ist no),
  • Ports ohne Anführungszeichen und doppelt belegte Host-Ports,
  • environment mit gemischter Listen- und Map-Schreibweise oder Einträgen der Form - KEY: wert.

Die Prüfung ersetzt nicht den Test mit Docker selbst. Auf dem Server zeigt der folgende Befehl die vollständig aufgelöste Konfiguration einschließlich der Variablen aus der .env-Datei:

# aufgelöste Konfiguration anzeigen
docker compose config

# nur prüfen, ohne Ausgabe
docker compose config --quiet

Wie Sie mehrere Container sauber in einer Datei beschreiben, zeigt Docker Compose: Multi-Container-Stacks aufbauen; Secrets, Healthchecks und Container ohne Root-Rechte behandelt Docker Compose absichern. Haben Sie nur einen docker run-Befehl, wandelt ihn das Tool docker run → Compose um.

Häufige Fragen

Gehen Kommentare beim Formatieren verloren?

Ja. Der Parser liest nur die Daten; Kommentare, Leerzeilen und die ursprüngliche Schreibweise von Texten gehören nicht dazu. Die formatierte Ausgabe enthält deshalb keine Kommentare, und Anker werden aufgelöst. Behalten Sie Ihre Originaldatei und nutzen Sie die Ausgabe zum Vergleichen oder als bereinigte Fassung.

Kann ich mehrere Dokumente in einer Datei prüfen?

Ja. Dokumente werden durch eine Zeile mit --- getrennt, wie es bei Kubernetes-Manifesten üblich ist. Das Tool zeigt die Anzahl der Dokumente, formatiert jedes einzeln und gibt sie in der JSON-Ansicht als Array aus.

Was bedeuten &, * und << in einer YAML-Datei?

Mit &name legen Sie einen Anker an, mit *name verweisen Sie später darauf, und <<: *name übernimmt die Schlüssel des Ankers in ein Mapping. In Compose-Dateien wird das oft mit Erweiterungsfeldern kombiniert, deren Name mit x- beginnt; Docker Compose ignoriert solche Felder auf oberster Ebene.

Ist das Prüfen unbekannter Dateien sicher?

Die Datei wird nur in Ihrem Browser gelesen und nicht übertragen. js-yaml erzeugt in Version 4 ausschließlich Daten und führt keinen Code aus. Gegen Dateien, die sich über Anker zu riesigen Strukturen aufblähen, begrenzt das Tool die Zahl der aufgelösten Knoten.

Prüft das Tool auch Kubernetes-Felder?

Nein, es prüft die YAML-Syntax und zeigt die Struktur, kennt aber das Schema von Kubernetes nicht. Ob Felder wie containerPort richtig geschrieben und eingerückt sind, prüft der API-Server mit kubectl apply --dry-run=server -f deployment.yaml, ohne etwas zu ändern. Einen kleinen Cluster zum Testen richten Sie mit k3s ein.

Wo lege ich die Compose-Datei auf einem Synology-NAS ab?

Im Container Manager legen Sie dafür ein Projekt an und fügen die Datei dort ein oder laden sie hoch. Prüfen Sie sie vorher hier, dann sehen Sie Syntaxfehler mit genauer Zeilenangabe, bevor der Container Manager das Projekt ablehnt. Schritt für Schritt beschreibt das die Anleitung Container Manager: Compose-Projekt auf dem Synology NAS.