Nodemon无法在Windows Docker环境中重新启动

时间:2016-08-31 02:11:40

标签: node.js windows docker watch nodemon

我的目标是设置一个Docker容器,当从主机检测到文件更改时,该容器会自动重启NodeJS服务器。

我已选择nodemon来查看文件以进行更改。

在Linux和Mac环境中,nodemon和docker正在完美运行。

但是,当我在 Windows环境时,nodemon不会重新启动服务器。

文件在主机上更新,并使用docker-compose.yml文件中的volumes参数进行链接。

运行docker exec <container-name> cat /path/to/fileChanged.js时,我可以看到文件已更改。这样我知道文件正确链接并且已在容器中修改过。

为什么nodemon没有为Windows重新启动服务器?

4 个答案:

答案 0 :(得分:27)

使用nodemon --legacy-watch轮询文件更改,而不是侦听文件系统事件。

VirtualBox doesn't pass file system events over the vboxfs share到您的Linux VM。如果您使用Docker for Windows,则看起来HyperV也不会传播文件系统事件。

答案 1 :(得分:0)

这很简单,根据doc,您必须更改:

nodemon server.js

收件人:

nodemon --legacy-watch server.js

答案 2 :(得分:0)

答案 3 :(得分:0)

正如其他人所提到的,使用 node --legacy-watch 会起作用,但是,默认的轮询率会对您的 CPU 造成很大负担。就我而言,它仅通过循环遍历项目中的所有文件就消耗了我 30% 的 CPU。我建议您指定@Sandokan El Cojo 提到的轮询间隔。

您可以通过将 "pollingInterval": 4000(在本例中为 4 秒)添加到您的 nodemon.json 文件或在命令中使用 -P--polling-interval 标志指定它来实现。< /p>