You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下Nodemon文件同步但未自动重启问题求助

Docker中Nodemon无法自动重启服务的解决方案

问题描述

我是Docker新手,通过bind mount实现了文件变更同步,但nodemon并未自动重启服务,必须停止容器后重新执行docker compose up才能看到变更效果。本地未使用Docker时运行一切正常,相关配置文件如下:

Dockerfile

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"
    }
}

可能的解决方法

1. 切换nodemon的文件监听模式

Alpine基础镜像缺少inotify相关依赖,nodemon默认的inotify监听方式无法正常工作。修改package.json中的dev脚本,使用轮询模式:

"dev": "nodemon --legacy-watch index.js"

2. 确保容器内安装了nodemon

npm ci默认只安装dependencies,不会安装devDependencies。修改Dockerfile中的安装命令,包含开发依赖:

RUN npm ci --include=dev

或者进入容器手动安装:

docker exec -it study-001-frontend-reactjs npm install nodemon --save-dev

3. 解决文件权限问题

容器内的用户可能没有权限读取挂载目录的文件变更,导致nodemon检测不到。在docker-compose.yml中添加用户配置,使用当前主机用户的UID和GID:

services:
  frontend:
    # 保留原有配置
    user: "${UID}:${GID}"

执行以下命令获取并导出当前用户的UID/GID:

export UID=$(id -u)
export GID=$(id -g)

或者在项目根目录创建.env文件,写入:

UID=你的UID
GID=你的GID

(可通过id -u和id -g命令查看自身UID/GID)

4. 明确nodemon的监听规则

在项目根目录创建nodemon.json配置文件,指定监听的目录和文件类型:

{
  "watch": ["./"],
  "ext": "js,json"
}

内容的提问来源于stack exchange,提问作者Mr.Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:00:00