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
Playground do conversor de Docker Run para Compose
Runs entirely in your browser — nothing is uploaded.
Tip: press Esc to release keyboard focus from the editor.
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.
-
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.
-
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.
-
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.
-
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.
-
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 -d -p 8080:80 --name web \
-v /data:/usr/share/nginx/html:ro \
--restart unless-stopped nginx:alpine Saída
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.
# 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.
Como converter um comando docker run para docker-compose.yml?
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.
Dá para converter docker compose para docker run de novo?
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.
Como as flags do docker run se mapeiam para os campos do docker compose?
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.
Como o docker run -p vira ports no docker compose?
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".
Como converter os volumes do docker run -v para um arquivo compose?
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.
Como ficam as variáveis de ambiente do docker run -e no docker-compose?
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.
No que o --restart se transforma em um serviço docker-compose?
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.
Este conversor de docker run para compose é grátis e funciona offline?
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.
Leia mais sobre isso
- docker run vs Docker Compose: um guia prático de migração Quando usar docker run, quando migrar para o Docker Compose e como converter entre os dois nos dois sentidos — com volumes, redes e reprodutibilidade tratados do jeito certo.
- Como Converter um Comando docker run em docker-compose.yml Converta qualquer comando docker run em um serviço docker-compose.yml, flag por flag — portas, volumes, ambiente, restart e muito mais. Um guia prático para copiar e colar.
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.