2016-08-31 17 views
6

私の目標は、ホストマシンからファイルの変更が検出されたときにNodeJSサーバーを自動的に再起動するDockerコンテナを設定することです。Windows Docker環境でNodemonが再起動しない

変更をファイルで監視するためにnodemonを選択しました。

LinuxおよびMac環境では、nodemonとdockerは問題なく動作しています。

しかし、私がのWindows環境にいる場合、nodemonはサーバーを再起動しません。

ファイルはホストマシン上で更新され、docker-compose.ymlファイルのvolumesパラメータを使用してリンクされています。

docker exec <container-name> cat /path/to/fileChanged.jsを実行するとファイルが変更されているのがわかります。これにより、ファイルが正しくリンクされており、コンテナ内で変更されていることがわかります。

nodemonがWindows用のサーバーを再起動しない理由はありますか?

答えて

11

nodemon --legacy-watchを使用して、ファイルシステムイベントをリッスンする代わりにファイルの変更をポーリングします。

VirtualBox doesn't pass file system events over the vboxfs shareをLinux VMに適用します。 Docker for Windowsを使用している場合、HyperVはファイルシステムイベントを伝播しないように見えます。

+0

ありがとうございました!私は[Nodemon README](https://github.com/remy/nodemon#application-isnt-restarting)でこのセクションをチェックしました。あなたの驚くべき応答時間に感謝します。 – RyanNHG

+0

ポーリング時間を指定することもできます:これをnodemon.json設定ファイルに追加するだけです: "legacyWatch":true、 "pollingInterval":4000 –

+0

新人などの場合:Dockerfileのコマンドは次のとおりです: 'CMD [ "nodemon"、 "-L"、 "your_file_here"] 'となります。あるいは同様にDockerfileに 'CMD [" npm "、" run "、" custom_script_name "]'を入れてから 'package.json'に' 'scripts":{ "custom_script_name": "nodemon -L your_file_here "、 ... }'どちらも 'docker-compose up'の後でDockerfileからこのコマンドを実行します。 –

関連する問題