Do terminal para uma configuração versionada

Converter docker run para Compose

Guarde os parâmetros de arranque num ficheiro que possa rever e reutilizar. Cole o comando docker run para organizar portas, variáveis e volumes numa configuração Compose.

docker runcompose.yaml
Conversão no navegador
01

Cole um comando. Aspas e continuação de linha com barra invertida são aceitas. A conversão acompanha a escrita.

02

compose.yaml

services:
  web:
    image: "nginx:alpine"
    container_name: "web"
    ports:
      - "8080:80"
    volumes:
      - "./html:/usr/share/nginx/html:ro"
    restart: "unless-stopped"
    network_mode: "bridge"

5 opções · 1 serviçoYAML

Antes de iniciar

  • O segundo plano é escolhido na arranque com docker compose up -d.
  • Caminhos relativos partem de compose.yaml. Confira a pasta ou use caminhos absolutos.
  • network_mode: bridge preserva a rede padrão de docker run. Remova o campo para o Compose criar sua rede de projeto.
Validar localmentedocker compose config

Sem registo nem execução de comandos. Os dados são processados no navegador.

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:alpine
services:
  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 DockerCampo ComposeTratamento
IMAGEimageImagem e tag preservadas
--namecontainer_nameNome explícito do contentor
-p, --publishportsMapeamento entre portas do host e do contentor
-e, --envenvironmentValores ausentes resolvidos no ambiente de execução
-v, --volume / --mountvolumesBind mounts, volumes nomeados ou anônimos
--networknetworks / network_modeNome ou modo da rede
--restartrestartPolítica de reinício
IMAGE [COMMAND] [ARG…]commandArgumentos 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 · $$