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
docker compose exec [OPTIONS] SERVICE COMMAND [ARGS...]SERVICE: O nome do serviço definido nodocker-compose.ymlno 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/wwwserá executado no serviçoweb, listando os arquivos no diretório/var/www.Executar um comando como um usuário específico:
Aqui, o comando
whoamiserá executado no serviçodbcomo 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
redistiver 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.shno serviçoappcom a variável de ambienteDEBUGdefinida comotrue.Executar um comando em um diretório específico:
O comando
npm installserá executado no diretório/usr/src/appdentro 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