私の目標は、ホストマシンからファイルの変更が検出されたときにNodeJSサーバーを自動的に再起動するDockerコンテナーをセットアップすることです。
ファイルの変更を監視するためにnodemonを選択しました。
LinuxおよびMac環境では、nodemonとdockerは問題なく動作しています。
ただし、Windows環境の場合、nodemonはサーバーを再起動しません。
ファイルはホストマシンで更新され、私のdocker-compose.ymlファイルのvolumes
パラメーターを使用してリンクされます。
docker exec <container-name> cat /path/to/fileChanged.js
を実行すると、ファイルが変更されたことがわかります。このようにして、ファイルが正しくリンクされ、コンテナで変更されていることがわかります。
nodemonがWindowsのサーバーを再起動しない理由はありますか?
使用する - nodemon --legacy-watch
ファイルシステムイベントをリッスンする代わりに、ファイルの変更をポーリングします。
VirtualBox vboxfs共有を介してファイルシステムイベントを渡さない をLinux VMに渡します。 Docker for Windowsを使用している場合、HyperVはファイルシステムイベントも伝達しないように見えます。
これはWindows用のdockerの問題でした。今では修正されています
https://www.docker.com/blog/new-filesharing-implementation-in-docker-desktop-windows/