docker compose run
O comando docker compose run é utilizado para executar um único comando em um contêiner baseado em um dos serviços definidos no arquivo docker-compose.yml. Ele permite que você execute comandos de forma interativa ou em segundo plano, útil para tarefas de administração, debugging ou execução de scripts específicos.
Sintaxe
docker compose run [OPÇÕES] [SERVIÇO] [COMANDO] [ARGUMENTOS...]Parâmetros
SERVIÇO: Nome do serviço definido no arquivodocker-compose.ymlno qual o comando será executado.COMANDO: O comando que você deseja executar dentro do contêiner.ARGUMENTOS: (Opcional) Argumentos adicionais que serão passados ao comando.
Opções
--name NOME: Define um nome específico para o contêiner criado para a execução do comando.-d, --detach: Executa o contêiner em segundo plano (modo "detached"), permitindo que você continue utilizando o terminal para outras tarefas enquanto o contêiner executa o comando.--rm: Remove automaticamente o contêiner após a execução do comando. Isso é útil para manter o ambiente limpo, evitando o acúmulo de contêineres temporários.-e, --env VAR=VAL: Define variáveis de ambiente para o contêiner no momento da execução do comando.--service-ports: Faz com que as portas definidas no arquivodocker-compose.ymlsejam expostas. Sem essa opção, as portas não são expostas por padrão no modo "run".-T: Desativa o alocamento de um pseudo-TTY. Útil em scripts onde não há necessidade de uma interface interativa.--volume, -v: Monta volumes adicionais no contêiner durante a execução do comando.--entrypoint: Sobrescreve oENTRYPOINTdefinido no Dockerfile ou nodocker-compose.yml, permitindo que você especifique um comando inicial diferente para o contêiner.
Exemplo de Uso
Executar um Comando em um Serviço: Para executar o comando
bashem um serviço chamadoweb, permitindo uma sessão interativa:Executar em Segundo Plano: Para executar um comando em segundo plano no serviço
web:Executar e Remover Contêiner Automaticamente: Para executar o comando
lsno serviçowebe remover o contêiner automaticamente após a execução:Passar Variáveis de Ambiente: Para executar um comando no serviço
webcom uma variável de ambiente específica:Expor Portas do Serviço: Para expor as portas definidas no
docker-compose.ymlao executar o comando:Montar Volumes Adicionais: Para montar um volume adicional durante a execução do comando:
Sobrescrever o EntryPoint: Para sobrescrever o
ENTRYPOINTe especificar um comando diferente:
Considerações
Diferença entre
runeexec: Enquanto odocker compose runcria um novo contêiner para executar o comando, odocker compose execexecuta o comando em um contêiner já em execução. Userunquando precisar de um contêiner temporário ou quando o serviço ainda não estiver em execução.Persistência do Contêiner: A menos que você utilize a opção
--rm, o contêiner criado pelodocker compose runpermanecerá no sistema após a execução do comando. Isso pode ser útil para debugging, mas também pode levar ao acúmulo de contêineres desnecessários.Portas e Redes: Por padrão, o
docker compose runnão expõe as portas definidas nodocker-compose.yml, a menos que você utilize a opção--service-ports. Se você precisa que o contêiner interaja com outros serviços por meio de portas expostas, certifique-se de usar essa opção.Isolamento do Contêiner: O contêiner iniciado com
docker compose runé isolado dos outros serviços definidos no arquivodocker-compose.yml, a menos que seja configurado para compartilhar redes e volumes explicitamente.
O comando docker compose run é uma ferramenta versátil para executar comandos únicos em ambientes de contêiner, permitindo flexibilidade no desenvolvimento, teste, e operações de manutenção de serviços baseados em Docker.
Last updated