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

Docker容器启动后自动停止,提示找不到/app/src/index.js模块求助

解决Docker容器启动找不到Node.js模块的问题

针对你遇到的MODULE_NOT_FOUND报错(找不到/app/src/index.js),核心问题是本地文件结构、Dockerfile指令与容器内预期路径不匹配,以下是具体排查和解决步骤:

1. 核对本地项目文件结构

先确认你的本地项目里index.js的实际位置:

  • 如果你的项目结构是:
    your-project/
    ├── src/
    │   └── index.js
    ├── package.json
    └── Dockerfile
    
    这符合官方文档的预期;如果index.js直接在项目根目录,那Dockerfile里的路径配置就需要调整。

2. 检查Dockerfile关键指令

重点确认以下3个部分:

WORKDIR(工作目录)

确保设置了容器内的工作目录为/app:

WORKDIR /app

COPY(文件复制)

如果本地有src目录,要把整个项目内容复制到容器的/app下:

# 先复制依赖文件,利用镜像缓存
COPY package*.json ./
RUN npm install
# 复制所有项目文件到容器工作目录
COPY . .

如果本地没有src目录,不要写COPY src/ /app/src/,否则容器里的/app/src会是空的。

CMD/ENTRYPOINT(启动命令)

确保启动命令指向的路径和容器内实际文件路径一致:

  • 如果容器内index.js在/app/src下,用:
    CMD ["node", "src/index.js"]
    
  • 如果index.js在/app根目录,改成:
    CMD ["node", "index.js"]
    

3. 验证package.json的启动脚本

打开本地的package.json,检查scripts里的start命令路径是否正确:

"scripts": {
  "start": "node src/index.js" // 和容器内文件路径对应
}

如果本地index.js在根目录,这里要改成"node index.js"。

4. 手动进入容器确认文件存在

如果以上步骤都没问题,启动一个临时容器进入shell,查看文件是否存在:

docker run -it --rm 你的镜像名称 sh

在容器内执行ls /app/src,如果看不到index.js,说明COPY指令没有正确把本地文件复制到容器里,检查本地文件是否在Dockerfile所在的目录下,同时确认.dockerignore文件没有排除src目录(如果有.dockerignore)。

内容的提问来源于stack exchange,提问作者Dr. J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:13:30