Zum Inhalt springen

docker run in Compose

docker run to Compose

Macht aus einer docker-run-Kommandozeile eine Compose-Service-Definition und wandelt auch in die andere Richtung um.

Wandelt eine `docker run`-Befehlszeile in den `compose.yaml`-Service um, dem sie entspricht. Der Befehl wird mit echten Shell-Quoting-Regeln zerlegt, sodass ein als `sh -c "…"` geschriebener Entrypoint mit seinen Leerzeichen und Anführungszeichen intakt bleibt.

🔒 Läuft vollständig in Ihrem Browserdockercomposeconvertdevops

docker-run-Befehl

compose.yaml

Hinweise

  • -d wirkt nur auf den docker-run-Aufruf selbst; Compose hat dafür keine Entsprechung, also wurde es verworfen.
Die Befehlszeile wird mit echten Shell-Quoting-Regeln zerlegt, deshalb übersteht ein Entrypoint wie sh -c "…" seine Leerzeichen. Flags ohne Compose-Entsprechung (--rm, -d) werden mit einem Hinweis verworfen — den Lebenszyklus bestimmt Compose selbst — und unbekannte Flags werden benannt, nie stillschweigend geschluckt. Ports stehen in der Ausgabe in Anführungszeichen, weil YAML 1.1 sonst 8080:80 als Zahl zur Basis 60 lesen würde.

So funktioniert es

  1. Fügen Sie den Befehl ein

    Zeilenfortsetzungen, Werte in Anführungszeichen und ein nachgestellter Befehl hinter dem Image werden alle behandelt. Nichts wird ausgeführt – das ist Text rein, Text raus.

  2. Lesen Sie die Hinweise unter der Ausgabe

    Flags ohne Compose-Entsprechung werden aufgeführt, statt stillschweigend wegzufallen, und ein unbekanntes Flag wird beim Namen genannt. Diese Liste ist der Teil, den Sie prüfen sollten, bevor Sie die Datei committen.

  3. Kopieren Sie es in Ihre Compose-Datei

    Die Ausgabe ist ein Service. Setzen Sie ihn unter `services:` neben das, was Sie sonst haben, und geben Sie ihm den gewünschten Namen, wenn der Befehl kein `--name` hatte.

Häufige Fragen

Warum stehen die Ports in Anführungszeichen?

Weil YAML 1.1 `8080:80` als Zahl zur Basis 60 liest – die Sexagesimalsyntax, die niemand wollte und jeder YAML-Parser geerbt hat. Die Anführungszeichen sind es, was es als Port-Zuordnung erhält. Das ist die klassische Compose-Falle.

Was ist mit `--rm` und `-d` geschehen?

Mit einem Hinweis weggelassen, denn Compose besitzt den Lebenszyklus. `docker compose up` ist die Entscheidung zwischen detached und attached, und `docker compose down` entfernt Container, sodass diese Flags keine Entsprechung auf Service-Ebene haben, in die sie übersetzt werden könnten.

Schreibt es eine ganze Compose-Datei?

Es schreibt den Service. Netzwerke, Volumes auf oberster Ebene und ein `version:`-Schlüssel (den modernes Compose nicht mehr will) sind Ihre Sache – und meistens sollten Sie sie nicht brauchen.

Eingabe aus

Danach

Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.