繁体   English   中英

Nodemon 在 Windows Docker 环境中不会重启

[英]Nodemon Doesn't Restart in Windows Docker Environment

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

我选择了 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。 如果您在 Windows 上使用 Docker,HyperV 似乎也不传播文件系统事件。

作为 2021 年的旁注,Docker for Mac/Windows 用于将本地文件挂载到 VM 的新 GRPCfuse 文件系统现在应该发送文件系统事件。

这很简单,根据您必须更改的文档

nodemon server.js

到:

nodemon --legacy-watch server.js

这是 Windows docker 中的一个问题。 现在修复了

https://www.docker.com/blog/new-filesharing-implementation-in-docker-desktop-windows/

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM