docker compose watch

O comando docker compose watch é utilizado para monitorar alterações em arquivos no sistema de arquivos do host e automaticamente reiniciar os contêineres associados quando essas alterações são detectadas. Ele é útil em cenários de desenvolvimento, onde você precisa ver as mudanças no código ou na configuração refletidas imediatamente nos contêineres em execução sem a necessidade de reiniciá-los manualmente.

Nota: O comando docker compose watch não é um comando nativo do Docker Compose. Em vez disso, o comportamento desejado geralmente é implementado usando ferramentas de terceiros ou scripts customizados que monitoram as mudanças nos arquivos e reiniciam os contêineres automaticamente.

Alternativas ao Comando watch

Embora não haja um comando docker compose watch nativo, você pode alcançar funcionalidades semelhantes usando as seguintes abordagens:

  1. Uso de docker-sync e mutagen: Ferramentas como docker-sync e mutagen podem sincronizar automaticamente arquivos entre o host e os contêineres, permitindo que as mudanças sejam refletidas sem a necessidade de reiniciar os contêineres.

    docker-sync start

    Essas ferramentas podem ser configuradas para observar mudanças no sistema de arquivos e garantir que elas sejam propagadas para os contêineres.

  2. Uso de nodemon, entr, ou watchman: Se você estiver desenvolvendo uma aplicação que precisa ser reiniciada quando os arquivos são alterados, pode usar ferramentas como nodemon, entr, ou watchman dentro do contêiner. Essas ferramentas monitoram os arquivos e executam comandos automaticamente quando detectam mudanças.

    Por exemplo, se você estiver trabalhando em uma aplicação Node.js, pode usar o nodemon:

    nodemon --watch src --exec "npm start"

    Ou, usando entr em um script personalizado:

    ls *.js | entr -r docker compose restart web
  3. Scripts Customizados: Você pode criar scripts customizados para monitorar alterações e reiniciar os contêineres ou serviços específicos. Por exemplo, um script bash que utiliza inotifywait para observar mudanças:

    while inotifywait -r -e modify,create,delete ./src; do
      docker compose restart web
    done

Exemplo de Uso com nodemon

Se você estiver desenvolvendo uma aplicação com Node.js, pode usar nodemon dentro do contêiner para reiniciar automaticamente a aplicação quando arquivos forem modificados:

Considerações

  • Ferramentas de Monitoramento: Dependendo do tipo de aplicação, diferentes ferramentas podem ser mais adequadas para monitorar alterações. nodemon é excelente para Node.js, enquanto entr e watchman são mais genéricos e podem ser usados com qualquer linguagem.

  • Desempenho: Monitorar muitas alterações em tempo real pode consumir recursos do sistema, especialmente em projetos grandes. Ferramentas como mutagen ou docker-sync são otimizadas para esse propósito, enquanto scripts simples podem ser menos eficientes.

  • Cenários de Uso: A abordagem de "watch" é particularmente útil em desenvolvimento, onde ciclos rápidos de teste e feedback são essenciais. Em produção, essa abordagem é geralmente evitada devido à necessidade de estabilidade e previsibilidade.

Embora o docker compose watch não seja um comando nativo, várias alternativas e ferramentas estão disponíveis para alcançar resultados semelhantes, automatizando a detecção de mudanças e o reinício de contêineres durante o desenvolvimento.

Last updated