Docker:Nodemon 正在同步但没有重新运行

问题描述 投票:0回答:1

我是新来的

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 的情况下运行项目,一切正常。

我错过了什么..?

docker binding nodemon application-restart
1个回答
0
投票

我怀疑 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

© www.soinside.com 2019 - 2024. All rights reserved.