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
Parâmetros
SERVIÇO
: Nome do serviço definido no arquivodocker-compose.yml
no 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.yml
sejam 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 oENTRYPOINT
definido 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
bash
em 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
ls
no serviçoweb
e remover o contêiner automaticamente após a execução:Passar Variáveis de Ambiente: Para executar um comando no serviço
web
com uma variável de ambiente específica:Expor Portas do Serviço: Para expor as portas definidas no
docker-compose.yml
ao executar o comando:Montar Volumes Adicionais: Para montar um volume adicional durante a execução do comando:
Sobrescrever o EntryPoint: Para sobrescrever o
ENTRYPOINT
e especificar um comando diferente:
Considerações
Diferença entre
run
eexec
: Enquanto odocker compose run
cria um novo contêiner para executar o comando, odocker compose exec
executa o comando em um contêiner já em execução. Userun
quando 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 run
permanecerá 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 run
nã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