现象
用户在FastGPT项目根目录执行构建命令:docker build -f ./projects/mcp_server/Dockerfile -t mcp_server:1.0.0 . --build-arg proxy=taobao --no-cache,构建过程在第21步(共29步)执行pnpm --filter=mcp_server build时失败,具体报错信息如下:
- 出现EISDIR读取文件错误,提示无法读取
/app/projects/mcp_server/node_modules/express和/app/projects/mcp_server/node_modules/dayjs - 多个依赖无法解析:
raw-body、content-type、zod,系统提示Maybe you need to "bun install" - 最终返回
ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL错误,命令退出状态码为1,镜像构建失败。
可能原因
结合报错信息分析,核心原因集中在依赖安装与构建环节:
- 构建流程中未执行完整的依赖安装步骤,导致
raw-body、content-type、zod等依赖未被正确拉取 - 构建时传入的代理配置可能未生效,导致依赖拉取不完整
- bun构建过程中尝试将node_modules下的目录当作文件读取,触发EISDIR路径错误
- pnpm的filter参数未正确拉取所有子依赖,导致
@modelcontextprotocol/sdk依赖的第三方包未被安装
排查步骤
- 检查目标Dockerfile,确认在
pnpm --filter=mcp_server build命令前是否添加了依赖安装指令,例如是否存在RUN pnpm --filter=mcp_server install步骤 - 核对构建命令中的
--build-arg proxy=taobao参数,确认该代理配置适配当前网络环境,避免依赖拉取失败 - 若可访问构建上下文目录,手动进入
projects/mcp_server文件夹,执行pnpm install和bun install,验证是否能补全缺失的依赖 - 确认构建命令的执行目录为项目根目录,避免因工作目录错误导致依赖路径解析异常
解决与验证
根据排查结果执行对应修复操作:
- 若缺失依赖安装步骤,在Dockerfile的构建命令前添加依赖安装指令,例如在
RUN pnpm --filter=mcp_server build前插入RUN pnpm --filter=mcp_server install - 若代理配置不生效,调整
--build-arg proxy参数为适配当前网络的代理地址,或移除该参数(若本地网络可直接拉取依赖) - 若为bun构建的路径错误,可尝试检查node_modules目录的权限配置,或调整构建命令的参数
完成修复后,重新执行原构建命令,确认第21步的构建环节不再报错,镜像构建成功。