Vai al contenuto

Da docker run a Compose

docker run to Compose

Trasforma una riga di comando docker run nella definizione di un servizio compose, e converte anche nel verso opposto.

Converte una riga di comando `docker run` nel servizio `compose.yaml` che le corrisponde. Il comando viene suddiviso con le vere regole di quoting della shell, così un entrypoint scritto come `sh -c "…"` sopravvive con i suoi spazi e le sue virgolette intatti.

🔒 Funziona interamente nel tuo browserdockercomposeconvertdevops

Comando docker run

compose.yaml

Note

  • -d agisce solo sull’invocazione di docker run stessa; Compose non ha un equivalente, quindi è stata scartata.
Il comando viene diviso con le vere regole di quoting della shell, così un entrypoint come sh -c "…" sopravvive con i suoi spazi. Le flag senza equivalente in Compose (--rm, -d) vengono scartate con una nota — il ciclo di vita lo decide Compose — e le flag sconosciute vengono nominate, mai ingoiate in silenzio. Le porte escono tra virgolette, altrimenti YAML 1.1 leggerebbe 8080:80 come un numero in base 60.

Come si usa

  1. Incollare il comando

    Le continuazioni di riga, i valori fra virgolette e un comando finale dopo l’immagine sono tutti gestiti. Non viene eseguito niente: qui entra testo ed esce testo.

  2. Leggere le note sotto l’uscita

    I flag senza equivalente in Compose vengono elencati invece che scartati in silenzio, e un flag sconosciuto viene nominato. Quell’elenco è la parte che vale la pena controllare prima di committare il file.

  3. Copiarlo nel proprio file compose

    L’uscita è un solo servizio. Va messo sotto `services:` accanto a quello che c’è già, e se il comando non aveva un `--name` gli si dà il nome che si vuole.

Domande frequenti

Perché le porte sono fra virgolette?

Perché YAML 1.1 legge `8080:80` come un numero in base 60 — la sintassi sessagesimale che non voleva nessuno e che ogni parser YAML si è ereditata. Sono le virgolette a tenerlo una mappatura di porte. È la classica trappola di Compose.

Che fine hanno fatto `--rm` e `-d`?

Scartati con una nota, perché il ciclo di vita è di Compose. `docker compose up` è la decisione fra attaccato e staccato e `docker compose down` rimuove i container, quindi quei flag non hanno un equivalente a livello di servizio in cui tradurli.

Scrive un file compose intero?

Scrive il servizio. Le reti, i volumi al livello superiore e una chiave `version:` (che il Compose moderno non vuole più) restano da aggiungere a mano — e nella maggior parte dei casi non dovrebbero servire.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.