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 no docker-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

  1. Executar um comando em um container específico:

    Neste exemplo, o comando ls /var/www será executado no serviço web, listando os arquivos no diretório /var/www.

  2. Executar um comando como um usuário específico:

    Aqui, o comando whoami será executado no serviço db como o usuário root.

  3. Executar um comando em segundo plano:

    Este comando executará a migração do banco de dados em segundo plano no serviço app.

  4. 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.

  5. Especificar variáveis de ambiente para o comando:

    Executa o script start.sh no serviço app com a variável de ambiente DEBUG definida como true.

  6. Executar um comando em um diretório específico:

    O comando npm install será executado no diretório /usr/src/app dentro do serviço web.

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