image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Altair Alencastro
Altair Alencastro03/05/2025 09:44
Compartilhe

Modo watch no Docker Compose para desenvolvimento

  • #Docker

Sabe aquele momento que você altera um arquivo de configuração, como por exemplo o nginx.conf, e precisa parar o container, rodar build de novo, subir tudo só pra testar?

Pois é… cansativo, né? É nesse exato momento que o modo watch entra em cena!

☑️ Por que volumes não são ideais em ambiente de desenvolvimento?

➖ Volumes foram feitos pensando em produção, não em desenvolvimento.

➖ Eles são I/O bloqueantes, ou seja, não é possível que dois processos acessem o mesmo arquivo simultaneamente.

➖ Com volumes, você altera um arquivo e... nada acontece, a não ser que reinicie o container ou até use o --build.

➖ Em projetos com testes longos, esse vai e vem custa tempo demais.

☑️ E o modo watch, o que é?

➖ Parece volume, mas tem outra vibe! Foi pensado especificamente para ajudar quem está desenvolvendo.

➖ Não é I/O bloqueante e é muito mais leve.

➖ Permite sincronizar arquivos com containers em tempo real.

➖ E o melhor: ainda reinicia o serviço automaticamente quando o arquivo for alterado.

☑️ Como usar na prática?

Imagine que você tem um container com NGINX e quer atualizar o nginx.conf. Seu docker-compose pode ficar assim:

nginx:
 build: ./.docker/nginx
restart: always
profiles: [nginx]
ports:
  - 4000:80
develop:
  watch:
    - action: sync+restart
      x-initialSync: true 
      path: ./.docker/nginx/nginx.conf
      target: /etc/nginx/nginx.conf

Aqui, usamos "action: sync+restart" para sincronizar o arquivo e reiniciar o container automaticamente. O "x-initialSync: true" garante que o Docker copie o arquivo assim que tudo subir. Vale lembrar que esse comando é experimental; também é possível copiar o arquivo no Dockerfile, porém o action precisa ser alterado para rebuild.

Veja nas imagens 1 e 2 abaixo os exemplos na prática.

image

image

☑️ Explicando as opções do "action"

sync: Apenas sincroniza os arquivos alterados entre a máquina host e o container, sem reiniciar o serviço.

restart: Reinicia o container assim que uma modificação é detectada, sem fazer a sincronização dos arquivos.

sync+restart: Combina os dois, sincronizando os arquivos e, em seguida, reiniciando o container para aplicar as mudanças.

rebuild: (Quando suportado) Recompila a imagem do container para incorporar alterações que dependam do build, útil se você estiver copiando arquivos durante o build.

☑️ Como rodar?

Use o seguinte comando para ativar o modo watch:

docker compose --watch

A cada alteração no arquivo, o Docker sincroniza e reinicia o container. É como ter um live reload, mas no mundo dos containers!

Veja abaixo na imagem 3 o exemplo prático:

image

☑️ Quando usar?

➖ Sempre que estiver em desenvolvimento e quiser ganhar mais produtividade.

➖ Ideal para editar configurações, arquivos de teste ou qualquer arquivo dinâmico que precise de reload imediato.

➖ Menos tempo esperando, mais tempo codando!

Espero que esse conteúdo ajude você a explorar melhor os recursos do Docker e otimize seus fluxos de trabalho. Se tiver dúvidas ou quiser compartilhar experiências e dicas, deixe seu comentário! 💬

Acompanhe minhas publicações e projetos:

🔗 GitHub: https://github.com/Altair-Mateus

🔗 Linkedin: https://www.linkedin.com/in/altair-mateus-t-alencastro/

🔗 Portfólio: https://altair-mateus.github.io/portfolio/

Compartilhe
Recomendados para você
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comentários (0)