当挂载卷中的文件在主机上更改时,docker 容器中未触发文件系统事件

File system events not triggered in docker container when files in mounted volume are changed on the host

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

项目在 docker 容器中运行,项目文件在已装载的卷中。

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

docker-compose exec dev vim server.js

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

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

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

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

平台信息:

当 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