首页 > 解决方案 > 在主机上更改挂载卷中的文件时,不会在 docker 容器中触发文件系统事件

问题描述

我想在文件更改时使用 nodemon 重新启动我的项目。我认为 nodemon 通过侦听 inotify 事件来触发重新加载 node.js 项目来工作。

该项目在 docker 容器中运行,并且项目文件位于已安装的卷中。

例如,从 docker 容器内部编辑项目文件时

docker-compose exec dev vim server.js

nodemon 正常工作并重新启动服务器。

但是,当使用在主机上运行的编辑器时,nodemon 不会获取更改并重新启动程序。

docker 容器中文件的内容确实发生了变化,所以我怀疑以这种方式编辑文件不会触发 FS 事件。

是否可以进行设置,以便在主机上编辑文件导致 Docker 容器中发生文件系统事件?为什么这还没有发生?

平台信息:

标签: node.jslinuxdockernodemoninotify

解决方案


当 Docker 在 Hyper-V 中运行并且更改发生在主机上时,文件系统事件似乎不起作用。但是,可以通过在 nodemon 中启用轮询来解决该限制:

nodemon -L server.js

在 WebStorm 中,最终被使用的完整命令是

docker-compose run dev node node_packages/nodemon/bin/nodemon.js -L server.js

更多信息: https ://github.com/remy/nodemon#application-isnt-restarting


推荐阅读