[英]NodeJs with Docker on Windows - Nodemon no update
我试图让 nodemon 与 docker 一起工作,以便服务器在每次更改后重新启动,但我似乎无法让它工作。
文件
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]
包.json
"main": "server.ts",
"scripts": {
"build": "tsc -p .",
"start": "nodemon -L src/server.ts"
},
"dependencies": {
"express": "^4.17.1",
"ts-node": "^8.6.2",
"typescript": "^3.7.5"
},
"devDependencies": {
"@types/node": "^13.7.0",
"eslint": "^6.8.0",
"nodemon": "^2.0.12"
}
如果我在本地运行服务器,则 nodemon 可以工作,但通过 Docker 则不行(它只运行一次)。 你知道如何解决它吗?
在 Docker 容器中使用nodemon
没有意义。 原因是每当您更改某些代码时,您都需要进行docker build
以将其转换为映像,然后将该映像作为容器运行。
因此,每次您想要更改代码时,最后一个容器实际上会停止,并且会启动一个新容器。 就像您停止node
并再次运行一样。
当您将代码从主机挂载到容器然后在挂载点上运行nodemon
可能是一个公平的选择时,可能会出现这样的情况。 但是对于您的 dockerfile 来说不是。
你的 docker 容器的运行命令是什么?
如果您需要 docker 容器查看您在本地所做的更改,您应该将卷从主机(本地)挂载到容器,如下所示:
docker run -dp 8080:8080 -v $(pwd):/usr/src/app
使用$(pwd)
作为您当前的工作目录(本地)
或者,如果您使用 docker-compose,请像这样安装卷:
services:
your_app:
build:
context: .
volumes: # mount volumes here
- ./:/usr/src/app
# rest config...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.