docker 构建映像后未安装 Nodemon

Nodemon not installed after docker build image

我有一个节点应用程序的图像。在 package.json 我有 nodemon。我想 运行 容器更新主机源,其中 nodemon 将热重新加载主机 src 的变化。所以我正在使用绑定安装。

package.json 来自节点应用程序。

{
  "name": "backend",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon app.js"
  },
  "author": "MOI",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "mongoose": "^5.10.3",
    "morgan": "^1.10.0"
  },
 "devDependencies": {
    "nodemon": "^2.0.4"
 }
}

Dockerfile

FROM node

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

EXPOSE 80

CMD ["npm", "start"]

然后我运行这个容器,当我检查日志时,我看不到nodemon正在运行。几乎就像它根本没有安装一样。有什么解决方法吗?

docker run --name goals-backend -v /Users/path/for/bind/mount/backend:/app \
-v logs:/app/logs -v /app/node_modules -d --rm \
-p 80:80 --network goals-net goals-node

您在 /app 'hides' 上绑定图像中 '/app' 中的所有内容,并将其替换为主机上 /Users/path/for/bind/mount/backend 的内容。 与 /app/node_modules 上的卷相同,但由于这是一个卷而不是绑定安装,/app/node_modules 的内容将在首次创建卷时复制到该卷。

运行 它没有体积映射以确保图像按原样工作

docker run --name goals-backend -d --rm -p 80:80 --network goals-net goals-node