docker 容器中的代码更改后,nodemon 未重新启动服务器
nodemon not restarting server on code change in docker container
我 运行 我的 node.js 应用程序在 docker 容器中,nodemon 没有根据更改重新加载。
这是我的 docker 文件:
WORKDIR /app
COPY package*.json ./
RUN yarn install
COPY . /app
EXPOSE 8080
CMD ["yarn", "dev"]
我正在使用此命令构建图像:
docker image build -t test7 .
然后 运行 它与 :
docker run -it -v "$(pwd)/app:/app/target_dir" test7 bash
我在容器内做 yarn dev,它启动服务器一次,但不会重新加载。
这是 package.json 文件:
"name": "self-learning",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"start": "node index.js",
"dev": "nodemon --legacy-watch index.js"
},
"dependencies": {
"cors": "^2.8.5",
"express": "^4.17.1",
"express-winston": "^4.0.3",
"multer": "^1.4.2",
"nodemon": "^2.0.2",
"pg": "^7.18.2",
"winston": "^3.2.1"
}
}
有什么办法吗?如何在不重建容器的情况下查看更改?
我认为你有 运行 这样的
docker run -it -v "$(pwd)/app:/app" test7
因为您复制了 /app 目录中的所有文件而不是 /app/target_dir
我认为,您需要包含一个 ENTRYPOINT 指令。对我来说,改变 ENTRYPOINT 指令是有效的。一开始它不起作用,但是当我包含 --legacy-watch 标志时,它开始起作用了。
从以下内容更改了 ENTRYPOINT
ENTRYPOINT [ "nodemon", "--inspect=0.0.0.0","./src/server.js" ]
至
ENTRYPOINT [ "nodemon", "--legacy-watch", "--inspect=0.0.0.0", "./src/server.js"]
我的完整docker文件如下。它是一个多目标 docker 文件。
FROM node:alpine as debug
WORKDIR /work/
COPY ./package.json /work/package.json
RUN npm install
RUN npm install -g nodemon
COPY ./ /work/src/
#ENTRYPOINT [ "nodemon", "--inspect=0.0.0.0","./src/server.js" ]
ENTRYPOINT [ "nodemon", "--legacy-watch", "--inspect=0.0.0.0", "./src/server.js"]
FROM node:alpine as prod
WORKDIR /work/
COPY ./package.json /work/package.json
RUN npm install
COPY ./ /work/
CMD node .
我 运行 我的 node.js 应用程序在 docker 容器中,nodemon 没有根据更改重新加载。 这是我的 docker 文件:
WORKDIR /app
COPY package*.json ./
RUN yarn install
COPY . /app
EXPOSE 8080
CMD ["yarn", "dev"]
我正在使用此命令构建图像:
docker image build -t test7 .
然后 运行 它与 :
docker run -it -v "$(pwd)/app:/app/target_dir" test7 bash
我在容器内做 yarn dev,它启动服务器一次,但不会重新加载。
这是 package.json 文件:
"name": "self-learning",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"start": "node index.js",
"dev": "nodemon --legacy-watch index.js"
},
"dependencies": {
"cors": "^2.8.5",
"express": "^4.17.1",
"express-winston": "^4.0.3",
"multer": "^1.4.2",
"nodemon": "^2.0.2",
"pg": "^7.18.2",
"winston": "^3.2.1"
}
}
有什么办法吗?如何在不重建容器的情况下查看更改?
我认为你有 运行 这样的
docker run -it -v "$(pwd)/app:/app" test7
因为您复制了 /app 目录中的所有文件而不是 /app/target_dir
我认为,您需要包含一个 ENTRYPOINT 指令。对我来说,改变 ENTRYPOINT 指令是有效的。一开始它不起作用,但是当我包含 --legacy-watch 标志时,它开始起作用了。
从以下内容更改了 ENTRYPOINT
ENTRYPOINT [ "nodemon", "--inspect=0.0.0.0","./src/server.js" ]
至
ENTRYPOINT [ "nodemon", "--legacy-watch", "--inspect=0.0.0.0", "./src/server.js"]
我的完整docker文件如下。它是一个多目标 docker 文件。
FROM node:alpine as debug
WORKDIR /work/
COPY ./package.json /work/package.json
RUN npm install
RUN npm install -g nodemon
COPY ./ /work/src/
#ENTRYPOINT [ "nodemon", "--inspect=0.0.0.0","./src/server.js" ]
ENTRYPOINT [ "nodemon", "--legacy-watch", "--inspect=0.0.0.0", "./src/server.js"]
FROM node:alpine as prod
WORKDIR /work/
COPY ./package.json /work/package.json
RUN npm install
COPY ./ /work/
CMD node .