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

Docker Compose挂载绑定失效,本地代码修改不生效求助

问题:Docker挂载本地代码后无法实时同步Node.js项目修改

我是Docker新手,正在练习搭建Node.js前端项目,已配置Express和nodemon,本地运行时代码修改后可实时刷新生效。但执行docker run -v ./src:/src/app/ -p 8080:8080 davihlav/frontend:v1命令,或使用如下配置通过Docker Compose运行后,修改本地代码无法同步到容器中,请问哪里配置出错了?

Dockerfile

FROM node:18.12.1-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY ./src ./src

EXPOSE 8080

CMD ["npm", "run", "dev"]

package.json脚本

"scripts": {
    "start": "node src/index.js",
    "dev": "nodemon --watch \"./**\" --ext \"js\" --exec \"node src/index.js\""
  },

docker-compose.yml

version: '3'
services:
  frontend:
    image: davihlav/frontend:v1
    build: ./frontend
    ports:
      - "8080:8080"
    volumes:
      - ./frontend/src:/app/src

错误分析与修复方案

1. Docker Run命令挂载路径错误

Dockerfile中设置的工作目录是/app,容器内项目代码实际存放在/app/src,但你执行的docker run命令把本地./src挂载到了容器的/src/app/目录,路径完全不匹配,导致本地修改无法同步到项目运行目录。

正确命令:

docker run -v ./src:/app/src -p 8080:8080 davihlav/frontend:v1

2. Nodemon容器内监听机制失效

Alpine镜像的文件系统特性会导致nodemon默认的文件监听机制无法触发,需要改用轮询模式监听文件变化。修改package.json的dev脚本,添加--legacy-watch参数:

"scripts": {
  "start": "node src/index.js",
  "dev": "nodemon --legacy-watch --watch \"./**\" --ext \"js\" --exec \"node src/index.js\""
},

3. Docker Compose挂载路径需匹配本地目录结构

你的docker-compose.yml配置的挂载路径是./frontend/src:/app/src,需要确保docker-compose.yml文件所在的当前目录下,确实存在frontend/src文件夹。如果你的src目录和docker-compose.yml同级,应修改为:

volumes:
  - ./src:/app/src

另外,使用Docker Compose时,建议先执行docker-compose build重新构建镜像(确保依赖安装完整),再用docker-compose up启动服务,避免镜像缓存导致的异常。

内容的提问来源于stack exchange,提问作者DaviHlav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:03:19