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

Docker容器中Strapi构建时Webpack进程卡住问题求解

可行解决方案

  • 调整Node.js内存上限
    Node默认的内存分配阈值低于容器分配的4GB,会触发频繁的垃圾回收甚至内存溢出,导致构建卡住。将Dockerfile中RUN yarn build修改为:
RUN NODE_OPTIONS="--max-old-space-size=3072" yarn build

预留1GB内存给系统进程,避免资源抢占。

  • 优化构建上下文减少IO开销
    在项目根目录新增.dockerignore文件,排除不需要复制到容器的冗余文件,降低SSD读取压力:
node_modules
.cache
build
.git
.env
.DS_Store
*.log
  • 更换基础镜像避免依赖兼容问题
    strapi/base镜像版本迭代滞后,存在旧版依赖和构建缺陷,推荐使用官方Node LTS镜像作为基础,补充必要的构建依赖即可:
FROM node:18-alpine

WORKDIR /srv/app

# 安装Strapi构建所需的系统依赖
RUN apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash

COPY ./package.json ./
COPY ./yarn.lock ./

RUN yarn install --production --frozen-lockfile

COPY . .

ENV NODE_ENV production

RUN NODE_OPTIONS="--max-old-space-size=3072" yarn build

EXPOSE 1337

CMD ["yarn", "start"]
  • 关闭Webpack冗余构建项
    在Strapi项目config/webpack.config.js中添加配置,关闭生产环境sourcemap生成,大幅降低资源处理阶段的计算和IO消耗:
module.exports = ({ env }) => ({
  build: {
    sourcemaps: false,
  }
})
  • 优化Docker构建环境
    如果使用Docker Desktop(Windows/macOS),开启BuildKit构建加速,执行构建命令前添加环境变量:
    DOCKER_BUILDKIT=1 docker build -t your-strapi-image .
    Windows用户可将项目放到WSL2文件系统内执行构建,避免跨系统文件挂载的IO性能损耗。构建阶段不要挂载本地目录到容器内的/srv/app路径,避免实时文件同步占用磁盘IO。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:24:03