Deixar o ambiente pronto para a próxima vez
Um comando no histórico do terminal resolve um teste, mas nem sempre chega para recriar o ambiente meses depois. Em compose.yaml, a imagem, as portas e as variáveis ficam em campos separados. Pode guardar o ficheiro no Git e rever as alterações juntamente com o projeto.
O conversor gera um serviço por comando, sem consultar o Docker nem alterar contentores em execução. Dependências entre serviços não são inferidas. Use o resultado como base para preparar a configuração no computador ou servidor de destino.
Como gerar e conferir o compose.yaml
Cole um comando iniciado por docker run ou docker container run. Preserve as aspas e a barra invertida no fim das linhas continuadas. O nome de serviço opcional muda apenas a chave em services; o --name continua em container_name.
Leia as notas, salve o ficheiro e confira os caminhos dos diretórios e ficheiros referenciados. Execute docker compose config antes de iniciar o serviço. Para execução contínua em segundo plano, use docker compose up -d. Tarefas com --rm têm um fluxo próprio.
Não confunda um volume novo com os dados antigos
Volumes nomeados mantêm o nome original e recebem external: true. Isso permite reutilizar o volume existente, sem criar outro com o prefixo do projeto Compose. Em uma instalação nova, crie o volume antes ou retire essa marca. A ferramenta não transfere os dados do volume.
Caminhos relativos partem da pasta que contém o ficheiro Compose. Redes personalizadas também são externas. Sem uma opção de rede, o YAML mantém network_mode: bridge. Para adotar a rede do projeto Compose e a resolução por nome de serviço, remova esse campo de propósito.
Exemplo: publicar o Nginx na porta 8080
A porta 8080 do host aponta para a porta 80 do contentor. A política unless-stopped aparece no YAML, enquanto -d é uma opção de arranque do Compose, não uma propriedade do serviço.
docker run -d --name web -p 8080:80 \
--restart unless-stopped nginx:alpineservices:
web:
image: "nginx:alpine"
container_name: "web"
ports:
- "8080:80"
restart: "unless-stopped"
network_mode: "bridge"
Resolva as expressões do shell antes de converter
A sintaxe aceita é a de shell POSIX, com aspas, escapes e continuação de linha. PowerShell, CMD, pipelines, vários comandos e opções globais do Docker não são compatíveis. Troque variáveis e $(pwd) pelos valores efetivos. Proteja um cifrão literal com aspas simples ou escape; no Compose ele fica como $$.
--env-file usa format: raw, que exige Docker Compose 2.30.0 ou mais recente. O conversor não abre ficheiros, verifica imagens nem testa portas disponíveis. A validação da configuração não garante que a aplicação vá iniciar.
Opções Docker e campos do Compose
| Opção Docker | Campo Compose | Tratamento |
|---|---|---|
IMAGE | image | Imagem e tag preservadas |
--name | container_name | Nome explícito do contentor |
-p, --publish | ports | Mapeamento entre portas do host e do contentor |
-e, --env | environment | Valores ausentes resolvidos no ambiente de execução |
-v, --volume / --mount | volumes | Bind mounts, volumes nomeados ou anônimos |
--network | networks / network_mode | Nome ou modo da rede |
--restart | restart | Política de reinício |
IMAGE [COMMAND] [ARG…] | command | Argumentos preservados em uma lista |
Dúvidas sobre a conversão
Preciso colocar version no ficheiro?
A saída segue a Compose Specification e começa em services. Não é acrescentado o antigo campo version. Use o comando atual docker compose para validar.
O que fazer com --rm?
Para uma tarefa pontual, execute docker compose run --rm --service-ports SERVICE, substituindo SERVICE pelo nome do serviço. --service-ports aplica o mapeamento de portas do ficheiro.
Por que --gpus interrompe a conversão?
Essa opção, --link e algumas montagens avançadas precisam de configuração manual. A saída é suspensa para evitar um YAML que omita opções da entrada.
Dá para juntar vários contentores?
Converta um comando por vez e junte as definições de serviços. Confira volumes compartilhados, redes e dependências antes de executar o projeto completo.
As senhas são enviadas ao servidor?
O comando é convertido no navegador e não é enviado ao servidor. Porém, os valores digitados continuam no ficheiro gerado. Revise o conteúdo antes de fazer commit.
E se já houver um contentor com esse nome?
A conversão não mexe no Docker. No momento de iniciar o Compose, resolva conflitos com nomes de contentores existentes e portas já ocupadas.
Documentação oficial do Docker: docker run · Compose · $$
