如何在不重启整个容器的情况下在 docker 容器上重启 Node?

How to restart Node on a docker container without restarting the whole container?

我有一个容器 ==> FROM node:5 每次更改代码后,节点都应重新启动。

但是如果不重新启动整个 docker 容器,我无法重新启动节点服务器。

我在 docker 文件上有很多 npm install 文件,每次我重新启动容器时都会运行,每次更改代码后都要等待所有这些文件,这很烦人。

我已经在使用共享文件夹将最新代码放入我的容器中。

我认为这不是 Docker 的最佳方式。您应该尝试构建自己的 Docker 映像,其中包含您的代码更改。在您自己的 Docker 映像中,您可以将 npm install 步骤作为容器构建的一部分,这样您就不需要 运行 在容器启动时执行此命令。

如果您只需要 Node.js 服务器在更改后重新启动,而不是使用 node 命令启动服务器,您可以使用像 node-dev or nodemon 这样的工具。要利用这些,您需要更新 Docker 文件中的命令,例如CMD [ "node-dev", "server.js" ].

由于您已经将本地文件作为卷存储在 Docker 容器中,因此对这些文件的任何更改都将重新启动服务器。

这是我的做法。在您的 docker-compose.yml 中,在相应服务的条目中,将入口点添加到 运行 npx nodemon /path/to/your/app 即使您没有在映像中安装 nodemon,这也会起作用。

例如

services:
  web:
    image: foo
    entrypoint: ["npx", "nodemon", "/usr/src/app/app.js"]