docker compose exec
O comando docker compose exec
permite que você execute comandos em um container em execução gerenciado por Docker Compose. Isso é útil para interagir diretamente com containers sem precisar sair do contexto do Docker Compose, facilitando tarefas como depuração, administração de serviços e execução de comandos ad-hoc.
Uso Básico
SERVICE
: O nome do serviço definido nodocker-compose.yml
no qual o comando será executado.COMMAND
: O comando que você deseja executar dentro do container.ARGS
: Argumentos opcionais para o comando.
Principais Opções
-d, --detach
: Executa o comando em segundo plano (background).-e, --env
: Define variáveis de ambiente no container para o comando a ser executado.--index
: Quando há múltiplas réplicas de um serviço, essa opção permite especificar em qual instância (replica) o comando deve ser executado, por meio de um índice numérico.-T
: Desativa a alocação de um pseudo-TTY (Terminal). Útil para scripts que não necessitam de uma interface interativa.-u, --user
: Especifica o usuário (UID ou nome) com o qual o comando será executado dentro do container.-w, --workdir
: Define o diretório de trabalho (working directory) dentro do container no qual o comando será executado.
Exemplos de Uso
Executar um comando em um container específico:
Neste exemplo, o comando
ls /var/www
será executado no serviçoweb
, listando os arquivos no diretório/var/www
.Executar um comando como um usuário específico:
Aqui, o comando
whoami
será executado no serviçodb
como o usuárioroot
.Executar um comando em segundo plano:
Este comando executará a migração do banco de dados em segundo plano no serviço
app
.Executar um comando em uma instância específica de um serviço:
Se o serviço
redis
tiver várias réplicas, esse comando será executado na segunda instância (replica) do serviço.Especificar variáveis de ambiente para o comando:
Executa o script
start.sh
no serviçoapp
com a variável de ambienteDEBUG
definida comotrue
.Executar um comando em um diretório específico:
O comando
npm install
será executado no diretório/usr/src/app
dentro do serviçoweb
.
Casos de Uso Comuns
Depuração: Executar comandos de shell diretamente em containers para inspecionar seu estado ou realizar diagnósticos.
Administração de Serviços: Executar comandos administrativos em serviços, como migrações de banco de dados, reinício de serviços internos, ou limpeza de cache.
Execução de Tarefas Temporárias: Realizar tarefas únicas ou temporárias, como rodar scripts que não fazem parte do fluxo principal da aplicação.
Considerações Finais
O comando docker compose exec
é essencial para a gestão de containers em tempo real, permitindo a interação direta com serviços em execução. Com as várias opções disponíveis, você pode personalizar a execução de comandos de acordo com as necessidades do seu ambiente, mantendo flexibilidade e controle sobre os containers.
Last updated