Transforme comandos docker run em um compose.yaml: portas, volumes, redes, health checks
Funciona no seu navegador. Nada do que você digita é enviado a lugar nenhum. Verificado em 16 de outubro de 2026.Cada flag do docker run tem uma chave do Compose. A imagem continua sendo image, e 5 flags comuns têm correspondência direta: -p vira ports, -e vira environment, -v vira volumes, --restart vira restart e --name vira container_name, enquanto -it corresponde a stdin_open e tty. Flags como -d e --rm não têm equivalente, já que docker compose up -d executa os serviços em segundo plano.
Esta página foi traduzida automaticamente do original em inglês. Nenhuma pessoa revisou ainda a tradução; a versão em inglês é a que deve ser considerada. Ler o original em inglês
Cole um ou mais comandos docker run, com as quebras de linha com barra invertida e tudo, ou clique em Testar um exemplo.
Leia o compose.yaml à direita: um serviço por comando, com volumes e redes declarados no final.
Confira as notas sobre flags que não têm equivalente no Compose, como --rm.
Clique em Baixar para salvar o compose.yaml e depois execute docker compose up -d na mesma pasta.
Um comando docker run que funciona é o melhor ponto de partida para um arquivo Compose, mas reescrever 10 flags à mão abre espaço para erros. Cole o comando, ou vários, e receba um compose.yaml com um serviço para cada um, seguindo a Compose Specification, para que funcione com docker compose up -d.
| docker run | compose.yaml |
|---|---|
--name web |
container_name: web |
-p 8080:80 |
ports: ["8080:80"] |
-e KEY=value |
environment: ["KEY=value"] |
-v data:/data |
volumes: mais um data: de nível superior |
--network shop-net |
networks: mais shop-net: external: true |
--restart unless-stopped |
restart: unless-stopped |
-it |
stdin_open: true, tty: true |
--gpus all |
deploy.resources.reservations.devices |
O que é entendido. Mais de 70 flags do docker run, em todas as grafias que a Docker CLI aceita: --flag value, --flag=value, -p80:80 e flags curtas agrupadas como -it ou -dp 3000:3000. Comandos quebrados em várias linhas com \ (bash), ^ (cmd) ou ` (PowerShell) são unidos, as aspas são lidas como um shell as lê, e $(pwd) em um volume vira ./, porque o Compose resolve os caminhos a partir da pasta do arquivo Compose.
Vários comandos de uma vez. Cole um script de configuração inteiro: cada docker run vira um serviço, outros comandos como docker network create são ignorados, e serviços que compartilham uma imagem recebem nomes diferentes.
Nada escondido. Flags sem equivalente no Compose, como --rm e -d, e qualquer flag que a ferramenta não conheça são listadas abaixo do resultado em vez de sumirem. Portas e valores de ambiente ficam entre aspas, para que nenhum leitor de YAML confunda 22:22 com um número. O arquivo não tem a chave version:, que a Compose Specification tornou obsoleta.
Tudo roda no seu navegador; os comandos que você cola, que muitas vezes contêm senhas, nunca são enviados a lugar nenhum.
Dê a cada flag sua chave do Compose dentro de um serviço: a imagem como image, -p como ports, -e como environment, -v como volumes, --name como container_name e --restart como restart. Volumes nomeados e redes personalizadas também recebem uma entrada de nível superior. Colando o comando aqui, o compose.yaml inteiro é gerado, pronto para docker compose up -d.
A flag -i vira stdin_open: true e -t vira tty: true, então -it ativa os dois. A flag -d não tem chave, porque docker compose up -d inicia todos os serviços em segundo plano. Para se conectar depois a um serviço em execução, use docker compose attach ou docker compose exec com o nome do serviço.
Nada no arquivo: os serviços do Compose foram feitos para permanecer, então não existe chave que exclua o contêiner quando ele para. Para uma tarefa avulsa, execute docker compose run --rm com o nome do serviço, que remove esse contêiner ao final. A nota abaixo do resultado avisa quando --rm foi deixado de fora.
Um docker run com --network shop-net usa uma rede que já existe. Marcá-la como external diz ao Compose para entrar nessa rede em vez de criar a sua própria, de modo que contêineres iniciados das duas formas continuem se comunicando. Para que o Compose crie e gerencie a rede, exclua a linha external: true.
Sim, escreva as portas como strings, por exemplo "8080:80". Alguns leitores de YAML tratam dois números unidos por dois-pontos como um número na base 60, então 22:22 poderia virar 1342 e quebrar um mapeamento de SSH. Esta ferramenta coloca entre aspas cada porta, entrada de ambiente e string de volume, para que o arquivo signifique o mesmo em qualquer lugar.
Não. A Compose Specification tornou a chave version: obsoleta, e versões recentes do docker compose exibem um aviso quando ela está presente. Os arquivos gerados aqui começam direto com services:, seguido de volumes: e networks: quando os comandos usam volumes nomeados ou redes personalizadas.
Taxas e regras mudam; confira a fonte antes de confiar em um valor.
Ainda com dúvidas? Pergunte sobre Converter docker run para docker compose e qualquer pessoa que saiba pode responder. Não é preciso ter conta.