【发布时间】:2023-03-26 09:50:01
【问题描述】:
我读了很多关于这个的帖子,但没有人解决任何问题。
有人说你必须在nodemon 命令中添加--legacy-watch(或-L)。
其他人展示了几种不同的配置,显然 nodody 真的知道当 docker 容器内的卷上的文件更改时,你必须做什么才能实现服务器重启。
这是我目前的配置:
Dockerfile:
FROM node:latest
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# install nodemon globally
RUN npm install nodemon -g
# Install dependencies
COPY package*.json ./
RUN npm install
# Bundle app source
COPY . /usr/src/app
# Exports
EXPOSE 3000
CMD ["npm", "start"]
docker-compose.yml
version: '3.1'
services:
node:
build: .
user: "node"
volumes:
- ./:/usr/src/app
ports:
- 3000:3000
depends_on:
- mongo
working_dir: /usr/src/app
environment:
- NODE_ENV=production
expose:
- "3000"
mongo:
image: mongo
expose:
- 27017
volumes:
- ./data/db:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
package.json
{
"name": "node-playground",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon -L"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"ejs": "^2.7.1",
"express": "^4.17.1",
"mongoose": "^5.7.1"
},
"devDependencies": {
"nodemon": "^1.19.2"
}
}
我也尝试了许多不同的设置。就像不全局安装 nodemon 而只是作为项目依赖项。并且还在docker-compse.yml 上运行命令,我相信还有很多其他我现在不记得了。没有。
如果有人对此有任何疑问,请提供帮助。谢谢!!!!
【问题讨论】:
-
您是否在您的
NPM脚本中调用nodemon?又名npm start是否包含nodemon命令?你能提供你的package.json吗?我什至看不到您在哪里运行nodemon命令... -
@MattOestreich 很抱歉,我忘记了那个文件。已编辑。
-
您以用户
node的身份运行容器,同时您还提供一个卷,该卷由主机系统中拥有它们的任何用户拥有。你确定你有正确的权限吗? -
那么你的容器启动了吗?容器内的应用程序是否响应?意思是,
nodemon启动您的应用程序,只是在发生变化时不会重新加载? -
@MichałSzydłowski 我会尝试删除用户参考。
标签: node.js docker docker-compose nodemon