Pular para o conteúdo

Converter docker run para docker compose · Docker

Converter docker run para docker compose — e de volta.

Use este conversor de docker run para docker compose online: cole um comando docker run e obtenha o YAML de serviço docker-compose.yml equivalente, ou cole um serviço Compose para reconstruir a linha de comando. Na hora, no seu navegador. Sem instalação, sem cadastro.

Roda no seu navegador — nada do que você cola sai desta página. Como comprovamos isso

Roda no seu navegador Sem cadastro Bidirecional Atualizado em 29 de jul. de 2026

Playground do conversor de Docker Run para Compose

docker run input

Runs entirely in your browser — nothing is uploaded.

Tip: press Esc to release keyboard focus from the editor.

Output

Pick a mode, load an example or paste your own, then convert to see the result here.

A lacuna

Um contêiner, dois formatos.

Um comando docker run é ótimo para um começo rápido, mas no momento em que você quer torná-lo reproduzível — versionado no controle de versão, revisado em um PR, iniciado com um único comando — você precisa de um docker-compose.yml. Traduzir uma parede de flags -p, -v e -e à mão é tedioso e propenso a erros: é fácil esquecer uma flag, aninhar uma lista errado ou colocar aspas em uma porta de forma incorreta.

Este conversor grátis faz a parte mecânica por você, nos dois sentidos. Para transformar docker run em docker compose, ele tokeniza o comando exatamente como um shell faria — respeitando aspas, flags curtas agrupadas e continuações de linha — mapeia cada flag para a chave correspondente do Compose, e emite o YAML docker-compose.yml determinístico. No sentido docker compose para docker run, ele reconstrói um comando executável a partir de um serviço e informa você sobre as chaves (depends_on, build, deploy) que simplesmente não têm equivalente de comando.

Tudo roda no seu navegador, então você pode converter comandos que citam registries privados ou variáveis de ambiente que carregam secrets sem que nada saia da aba. Veja a referência do docker run e a referência de serviços do Compose.

Veja o mapeamento completo de flag para chave, ou experimente o playground ao vivo acima.

O pipeline

Como funciona.

Cinco passos determinísticos rodam de ponta a ponta em cada conversão — todos dentro da aba do seu navegador, toda vez.

  1. Tokeniza o comando.

    Um tokenizador ciente do POSIX divide a linha, respeitando aspas simples e duplas e continuações com barra invertida e quebra de linha, para que valores entre aspas e colagens de várias linhas permaneçam intactos.

  2. Remove o prefixo.

    Um docker run ou docker container run inicial é removido, e flags curtas agrupadas como -it ou -itp são expandidas em suas flags individuais.

  3. Classifica cada flag.

    Cada flag é mapeada em um objeto de serviço — ports, volumes, environment, networks, capabilities, limits, labels e healthcheck — e o primeiro posicional se torna a imagem, e o resto, o comando.

  4. Emite YAML determinístico.

    Um pequeno escritor feito à mão imprime um bloco services: estável e amigável a diffs, indexado pelo nome do contêiner (ou app), colocando aspas apenas nos escalares que o YAML exige.

  5. Ou inverte.

    No modo compose → run o mesmo modelo é reconstruído a partir do YAML do Compose analisado em um comando docker run, com as chaves exclusivas do Compose surgindo como avisos.

Referência

Cada flag, mapeada.

As flags do docker run que o conversor reconhece e as chaves do docker-compose para as quais elas mapeiam. Qualquer coisa não reconhecida é reportada como uma nota em vez de ser descartada silenciosamente.

flag do docker run chave do Compose
-p / --publish ports Entre aspas, ex.: "8080:80".
-v / --volume, --mount volumes Forma curta source:target[:ro].
-e / --env environment Uma lista KEY=value.
--env-file env_file Um ou mais arquivos.
--name container_name Também a chave do serviço.
--restart restart no / always / unless-stopped …
--network / --net networks host / none → network_mode.
-w / --workdir working_dir
-u / --user user
--entrypoint entrypoint
--hostname hostname
--add-host extra_hosts
--cap-add / --cap-drop cap_add / cap_drop
--privileged privileged
-m / --memory mem_limit
--cpus cpus
-l / --label labels
--health-* healthcheck cmd / interval / timeout / retries.
-i / -t stdin_open / tty
--rm, -d / --detach — (aviso) Sem equivalente no Compose.

Entrada

docker run
docker run -d -p 8080:80 --name web \
  -v /data:/usr/share/nginx/html:ro \
  --restart unless-stopped nginx:alpine

Saída

docker-compose.yml
services:
  web:
    image: nginx:alpine
    container_name: web
    ports:
      - "8080:80"
    volumes:
      - /data:/usr/share/nginx/html:ro
    restart: unless-stopped

Depois de converter, inicie o serviço com docker compose up -d — o equivalente no Compose da flag -d original.

Próximo passo

Tem o serviço? Valide o pipeline e dimensione os pods.

Um serviço Compose raramente vem sozinho. Valide o CI que compila e faz push da imagem com o GitLab CI Validator, e quando você mover o contêiner para o Kubernetes, transforme seus limites de memória e CPU em requests/limits seguros com o Kubernetes Resource Calculator — tudo inteiramente no seu navegador.

next.sh
# build, push, deploy
docker build -t app .
docker compose up -d        # ← from this converter
kubectl apply -f deploy.yml # ← size it first

FAQ

Suas perguntas, respondidas.

Toque em uma pergunta para expandir a resposta.

Cole o comando docker run completo no conversor com o modo definido como run → compose, depois pressione Converter. Ele remove o docker run inicial, classifica cada flag em um objeto de serviço, trata o primeiro token que não é flag como a imagem e o resto como o comando, e imprime um bloco services: pronto para colar em um docker-compose.yml — sem instalação, sem daemon do Docker e sem nada enviado para lugar nenhum.

Sim. Mude o seletor de modo para compose → run, cole uma definição de serviço (ou um arquivo Compose completo — o primeiro serviço é usado) e ele reconstrói um comando docker run equivalente, incluindo portas, volumes, ambiente, redes, capabilities, limites de recursos e um healthcheck. As chaves que não têm equivalente no docker run — depends_on, build, deploy, profiles — são reportadas como avisos em vez de traduzidas.

As mais comuns: -p/--publish → ports, -v/--volume e --mount → volumes, -e/--env → environment, --env-file → env_file, --name → container_name, --restart → restart, --network/--net → networks (ou network_mode para host/none), -w/--workdir → working_dir, -u/--user → user, --entrypoint → entrypoint, --hostname → hostname, --add-host → extra_hosts, --cap-add/--cap-drop → cap_add/cap_drop, --privileged → privileged, -m/--memory → mem_limit, --cpus → cpus, -l/--label → labels, e as flags --health-* → um bloco healthcheck. -i e -t mapeiam para stdin_open e tty.

Cada flag -p/--publish vira um item da lista ports do serviço, mantendo a forma host:container. Por exemplo, -p 8080:80 vira a entrada "8080:80" sob ports. O conversor coloca aspas no valor porque o YAML poderia interpretar 8080:80 como um número sexagesimal sem elas, então o mapeamento fica seguro mesmo para portas como "22:22".

Cada -v/--volume (e também --mount) vira um item da lista volumes do serviço, preservando a forma source:target com o sufixo :ro ou :rw quando presente. Um -v /data:/usr/share/nginx/html:ro, por exemplo, vira a entrada /data:/usr/share/nginx/html:ro sob volumes, mantendo o modo somente leitura intacto.

Cada -e/--env vira um item KEY=value da lista environment do serviço, e qualquer --env-file vira uma entrada em env_file. Os valores são mantidos exatamente como você os colou, então variáveis com sinais de = ou aspas no valor sobrevivem à conversão sem serem mexidas.

A flag --restart do docker run vira diretamente a chave restart do serviço, com o mesmo valor: no, always, on-failure ou unless-stopped. Assim o seu serviço docker-compose mantém exatamente a mesma política de reinício que você definiu na linha de comando.

Sim. O conversor é grátis e roda 100% no lado do cliente. O comando ou YAML que você cola é tokenizado e convertido inteiramente dentro da aba do seu navegador — nada é enviado para um servidor e não há conta nem cadastro, então depois de carregada a página ele continua funcionando offline. Você pode converter com segurança comandos internos que mencionam registries privados, secrets em variáveis de ambiente ou hostnames internos.

More free, private DevOps tools.

O conversor de Docker Run para Compose é uma ferramenta dentro do OpsCanopy — uma copa crescente de validadores, conversores e testadores baseados em navegador que nunca tocam um servidor.

Começando com Docker?  Leia o guia de Docker →

39 ferramentas gratuitas, todas capazes de funcionar offline — o opscanopy.com não exige cadastro e não envia nada.

Ferramentas relacionadas: o validador do GitLab CI e a calculadora de recursos do Kubernetes. Explore o diretório completo de ferramentas.

Não é afiliado, endossado nem patrocinado pela Docker, Inc. Docker, docker run e Docker Compose são marcas comerciais da Docker, Inc., usadas aqui apenas de forma descritiva para identificar o comando e os formatos de arquivo entre os quais esta ferramenta converte.