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

Docker执行webpack构建无build目录,本地yarn build运行正常

问题根源

你的核心问题是webpack配置文件路径和输出路径不匹配导致的:
你将webpack.prod.config.ts存放在项目根目录下的webpack子目录中,配置里output.path写的是path.resolve(__dirname, 'build'),其中__dirname指向当前配置文件所在的目录,也就是容器内的/app/webpack/路径,所以构建完成后产物实际生成在/app/webpack/build,而非Dockerfile中指定的/app/build,因此COPY步骤找不到对应路径报错。


解决方案

方案1(最推荐):修改webpack输出路径

把webpack.prod.config.ts中的output.path配置调整为:

path: path.resolve(__dirname, '../build'),

这样构建产物就会生成到项目根目录的build文件夹下,和本地运行的预期一致,Dockerfile无需修改。

方案2:调整Dockerfile的COPY路径

如果不想改动webpack配置,可以把Dockerfile里的COPY语句改为:

COPY --from=build /app/webpack/build .

其他排查点

  • 确认构建阶段没有报错:如果yarn build过程中出现TS类型错误、ESLint校验错误、依赖安装失败等问题,会导致构建提前终止,自然不会生成产物目录。你可以在Dockerfile的RUN yarn install && yarn run build语句后临时添加RUN ls -la /app && ls -la /app/webpack,构建时查看目录结构确认产物位置。
  • 锁定Node.js版本:不要使用node:latest标签,不同时间拉取的latest版本可能存在差异,和你本地开发用的Node版本不一致也可能导致构建失败,建议换成和本地环境一致的版本,比如FROM node:18-alpine AS build,同时alpine镜像体积更小,构建速度更快。
  • 检查.dockerignore配置:确认你没有把webpack配置目录或者构建相关的依赖文件加入忽略列表,导致COPY步骤没有把必要文件传入容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:24:02