我的目标是建立一个Docker容器,当从主机检测到文件更改时,该容器将自动重新启动NodeJS服务器。
我选择了nodemon来监视文件的更改。
在Linux和Mac环境中,nodemon和docker可以正常工作。
但是,当我在 Windows环境中时 ,nodemon不会重新启动服务器。
这些文件在主机上更新,并使用volumes我的docker-compose.yml文件中的参数链接。
volumes
运行时,我可以看到文件已更改docker exec <container-name> cat /path/to/fileChanged.js。这样,我知道文件已正确链接并且已在容器中进行了修改。
docker exec <container-name> cat /path/to/fileChanged.js
有什么原因导致nodemon不重新启动Windows服务器?
使用nodemon --legacy-watch轮询文件更改,而不是听文件系统事件。
nodemon --legacy-watch
VirtualBox 不会通过vboxfs共享将文件系统事件传递给Linux VM。如果您使用的是Windows Docker,则HyperV似乎也不会传播文件系统事件。