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

首次使用Docker部署多容器项目,Node.js容器报模块未找到错误

Docker Node.js容器报MODULE_NOT_FOUND错误排查与修复

核心问题分析

你的Node.js容器找不到/app/customer/index.js,本质是Docker构建配置与docker-compose挂载配置的路径冲突,导致实际文件位置和预期不符:

  1. Dockerfile中先设置WORKDIR /app,再COPY ./customer .,这会把本地customer目录下的所有文件复制到容器的/app目录(比如index.js在/app/index.js),之后切换到/app/customer——但这个目录并未创建,不存在于容器中。
  2. docker-compose配置了./customer:/app挂载,会直接覆盖容器构建时/app目录的内容,容器内/app是本地customer的文件,但启动命令指向的/app/customer/index.js路径不存在。

修复方案

方案1:修正Dockerfile.nodejs(推荐)

调整工作目录和复制逻辑,让构建后的路径与启动命令匹配:

FROM node:18-alpine

# 直接将工作目录设为/app/customer
WORKDIR /app/customer

# 复制本地customer目录下的文件到容器当前工作目录
COPY ./customer .
RUN npm install

EXPOSE 3000

CMD ["node", "index.js"]

同时修改docker-compose中node服务的挂载配置,确保路径匹配:

services:
  node:
    build:
      context: .
      dockerfile: Dockerfile.nodejs
    volumes:
      - ./customer:/app/customer  # 挂载到正确的工作目录
      - /app/customer/node_modules  # 匿名卷避免覆盖node_modules
      - shared-package:/usr/src/app/shared
    # 其余配置不变

方案2:调整启动命令与挂载路径(快速修复)

若不想修改Dockerfile,直接调整docker-compose配置:

services:
  node:
    build:
      context: .
      dockerfile: Dockerfile.nodejs
    volumes:
      - ./customer:/app
      - /app/node_modules  # 修正匿名卷路径为/app/node_modules
      - shared-package:/usr/src/app/shared
    command: ["node", "/app/index.js"]  # 指定正确的文件路径
    # 其余配置不变

额外注意事项

  • 确认本地customer目录下确实存在index.js文件。
  • 修改配置后,重新构建镜像并启动容器:
docker-compose down
docker-compose build node
docker-compose up -d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:14:51