Pular para o conteúdo

docker run para Compose

docker run to Compose

Transforma uma linha de comando docker run numa definição de serviço do Compose, e converte de volta no outro sentido.

Converte uma linha de comando `docker run` no serviço de `compose.yaml` correspondente. O comando é dividido com as regras reais de aspas do shell, então um entrypoint escrito como `sh -c "…"` sobrevive com seus espaços e aspas intactos.

🔒 Roda inteiramente no seu navegadordockercomposeconvertdevops

Comando docker run

compose.yaml

Notas

  • -d só afeta a própria chamada do docker run; o Compose não tem equivalente, então foi descartada.
O comando é quebrado com as regras de aspas de um shell de verdade, então um entrypoint como sh -c "…" sobrevive com os espaços dele. As flags sem equivalente no Compose (--rm, -d) são descartadas com uma nota — quem decide o ciclo de vida é o Compose — e flags desconhecidas são nomeadas, nunca engolidas em silêncio. As portas saem entre aspas porque senão o YAML 1.1 leria 8080:80 como um número na base 60.

Como usar

  1. Cole o comando

    Continuações de linha, valores entre aspas e um comando final depois da imagem são todos tratados. Nada é executado: isto é texto que entra, texto que sai.

  2. Leia as notas abaixo da saída

    Flags sem equivalente no Compose são listadas em vez de descartadas em silêncio, e uma flag desconhecida é nomeada. Essa lista é a parte que vale conferir antes de commitar o arquivo.

  3. Copie para o seu arquivo compose

    A saída é um serviço. Coloque-o sob `services:` junto com o que você já tem, e dê o nome que quiser se o comando não tinha `--name`.

Perguntas frequentes

Por que as portas estão entre aspas?

Porque o YAML 1.1 lê `8080:80` como um número em base 60: a sintaxe sexagesimal que ninguém queria e todo parser de YAML herdou. As aspas são o que mantém isso como um mapeamento de portas. É a armadilha clássica do Compose.

O que aconteceu com `--rm` e `-d`?

Descartados com uma nota, porque o Compose é dono do ciclo de vida. `docker compose up` é a decisão entre anexado e em segundo plano e `docker compose down` remove os contêineres, então essas flags não têm equivalente no nível do serviço para onde traduzir.

Ele escreve um arquivo compose inteiro?

Ele escreve o serviço. Redes, volumes de nível superior e uma chave `version:` (que o Compose moderno não quer mais) ficam por sua conta — e na maior parte dos casos você não deveria precisar deles.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.