我是新来的
Docker
.
文件正在使用
bind mount
同步更改,但 nodemon
没有重新运行。要查看更改,我必须停止容器并使用 docker compose up
重新启动。
我尝试了很多解决方案,但问题仍然存在。
Docker文件
FROM node:18-alpine3.17
WORKDIR /app
COPY package*.json /app
RUN npm ci
COPY . /app
EXPOSE 3000
# CMD [ "npm", "run", "dev" ]
docker-compose.yml
version: "3.9"
services:
frontend:
build:
context: .
dockerfile: Dockerfile
command: npm run dev
container_name: study-001-frontend-reactjs
networks:
- study-001
ports:
- 3000:3000
volumes:
- .:/app
- /app/node_modules
networks:
study-001:
package.json
{
"name": "001-study",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "nodemon index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
},
"devDependencies": {
"nodemon": "^2.0.20"
}
}
如果我在不使用 Docker 的情况下运行项目,一切正常。
我错过了什么..?
我怀疑 nodemon 没有正确安装在 docker 容器中。
试试这个
:
docker-compose.yml: 删除卷 /app/nodemodules.
volumes:
- .:/app
Docker文件:
尝试使用 npm i 而不是 npm ci。
RUN npm install
将copy package*.json ./app 改为package*.json ./
COPY package*.json ./
您已经将 workdir 声明为 /app 所以替换 copy 。 /app 带副本。 .
COPY . .
最后杀掉容器,删除镜像,再次执行docker-compose up