Nodemon不在Windows Docker环境中重新启动

Rya*_*NHG 22 windows watch node.js docker nodemon

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

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

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

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

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

我跑步时可以看到文件已经改变了docker exec <container-name> cat /path/to/fileChanged.js.这样我知道文件正确链接并在容器中进行了修改.

nodemon没有为Windows重启服务器的原因吗?

Mat*_*att 35

使用nodemon --legacy-watch轮询文件的改变,而不是听文件系统事件.

VirtualBox 不会通过vboxfs共享将文件系统事件传递给Linux VM.如果您使用Docker for Windows,则看起来HyperV也不会传播文件系统事件.

  • 对于新手等:您的 Dockerfile 中的命令是:`CMD ["nodemon", "-L", "your_file_here"]`。或者类似地,您可以在 Dockerfile 中放置类似的内容: `CMD ["npm", "run", "custom_script_name"]` ,然后在 `package.json` 中放置 `"scripts": { "custom_script_name": "nodemon - L your_file_here", ... }` 其中任何一个都将在 `docker-compose up` 之后从 Dockerfile 运行此命令。 (3认同)
  • 非常感谢!我刚刚在 [Nodemon README](https://github.com/remy/nodemon#application-isnt-restarting) 中查看了这一部分。我很欣赏您令人难以置信的响应时间。 (2认同)
  • 非常感谢,旁注:现在是 2022 年,Windows 似乎没有将文件系统事件发送到虚拟机 (2认同)

Mas*_*iri 5

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

nodemon server.js
Run Code Online (Sandbox Code Playgroud)

到:

nodemon --legacy-watch server.js
Run Code Online (Sandbox Code Playgroud)