Anúncios incomodam? Ir Sem anúncios Hoje

Parar de escrever comandos docker run — Use Docker Compose em vez disso

Publicado em

A maioria dos comandos docker run se torna uma confusão de flags difícil de manter. Este guia mostra como converter o comando docker run para docker compose — com uma tabela de referência de flags, um exemplo real de conversão e uma ferramenta gratuita de conversão.

Parar de escrever comandos docker run — Use o Docker Compose em vez disso 1
ANUNCIADO Remover?

Todo fluxo do Docker começa da mesma forma: docker run. Uma bandeira, duas bandeiras — gerenciável. Mas, quando você está rodando um container com portas, variáveis de ambiente, volumes, política de reinício e uma rede personalizada, esse comando atinge 400 caracteres de algo que ninguém consegue lembrar, controlar com versão, ou entregar a um colega sem uma thread no Slack cheia de vergonha.

O Docker Compose é a solução. Um arquivo YAML substitui todo o comando — e você o commita no git.

Por que o docker run para escalar

Aqui está um comando típico docker run para um aplicativo Node.js:

docker run -d \
  --name my-app \
  -p 3000:3000 \
  -e NODE_ENV=production \
  -e DATABASE_URL=postgres://user:pass@db:5432/mydb \
  -v ./data:/app/data \
  --network app-network \
  --restart always \
  my-app:latest

Isso funciona. Uma vez. Depois você fecha o terminal, abre um novo três semanas depois e não sabe quais bandeiras você usou. Não há nada para git diff. Não há nada para compartilhar com um novo funcionário. Não há forma de verificar se o ambiente de staging corresponde ao de produção.

O que o Docker Compose oferece

O Docker Compose pega tudo que estava dentro desse docker run comando e coloca em um arquivo YAML chamado docker-compose.yml. Esse arquivo:

  • Está no seu repositório ao lado do seu código
  • Executa com um único docker compose up -d
  • Executa de forma idêntica em todas as máquinas e ambientes
  • Escala para configurações multi-serviço (aplicativo + banco de dados + cache) sem gymnastica de bandeiras

Como converter um comando docker run

Esse mesmo comando acima se torna esse docker-compose.yml:

version: "3.9"
services:
  my-app:
    image: my-app:latest
    container_name: my-app
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
      DATABASE_URL: postgres://user:pass@db:5432/mydb
    volumes:
      - ./data:/app/data
    networks:
      - app-network
    restart: always

networks:
  app-network:

Mesmo comportamento. Mas agora é legível, commitado e reprodutível.

Inicie-o:

docker compose up -d

Pare-o:

docker compose down

Bandeiras do docker run para chaves do docker-compose.yml

Uma referência para as bandeiras que você usará com mais frequência:

bandeira do docker runchave no docker-compose.ymlExemplo
-p 8080:80ports:- "8080:80"
-e FOO=barenvironment:FOO: bar
-v ./data:/datavolumes:- ./data:/data
--network mynetnetworks:mynet
--restart alwaysrestart:always
--name mycontainercontainer_name:mycontainer
--memory 512mmem_limit:512m
--cpus 1.5deploy.resources.limits.cpuscpus: "1.5"
-dUse o -d bandeira em tempo de execuçãodocker compose up -d

Converter automaticamente

Se você tem um comando longo existente docker run — especialmente um herdado de um README ou de um script de CI que ninguém tocou há dois anos — você não precisa mapear manualmente cada bandeira. Use o Conversor de Docker Run para Compose: cole o comando, obtenha um resultado válido docker-compose.yml .

Ele trata portas, variáveis de ambiente, volumes, redes, políticas de reinício e muito mais. Útil para migrar um-liners antigas sem introduzir erros durante a tradução.

Se você estiver configurando limites de recursos no seu arquivo Compose, o Calculadora de Recursos de Contêineres Docker ajuda você a escolher valores sensíveis de memória e CPU com base na sua carga de trabalho — antes de commitar números que você tirou do ar.

Verifique seu Dockerfile enquanto está fazendo isso

Uma vez que seu arquivo Compose esteja organizado, verifique o Dockerfile que ele constrói. Imagens base não fixadas, faltando WORKDIR, camadas redundantes RUN — essas são fáceis de ignorar e irritantes de depurar mais tarde. O Dockerfile Linter os detecta antes que se tornem problemas em produção.

Quer eliminar anúncios? Fique sem anúncios hoje mesmo

Instale nossas extensões

Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida

Ao Extensão do Chrome Ao Extensão de Borda Ao Extensão Firefox Ao Extensão Opera

O placar chegou!

Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!

ANUNCIADO Remover?
ANUNCIADO Remover?
ANUNCIADO Remover?

Notícias com destaques técnicos

Envolver-se

Ajude-nos a continuar fornecendo ferramentas gratuitas valiosas

Compre-me um café
ANUNCIADO Remover?