Bitbucket Pipeline构建Angular应用时Build容器内存超限问题求助
问题根因
你遇到的内存溢出核心原因是内存配额不匹配:
- Bitbucket Pipeline
size: 2x的单步总内存配额为8GB,你给Docker服务分配了4GB内存,剩余可给Node.js进程使用的内存仅为4GB - 你的构建命令中设置Node堆内存上限为
6144MB(即6GB),超出了可用内存上限,触发系统OOM Killer杀死进程,返回报错码137 - 额外异常点:错误日志中显示你的构建脚本末尾存在
&& npm run的空命令,需确认是否为package.json配置错误,额外触发冗余进程占用内存
解决方案
方案1:移除不必要的Docker服务(优先推荐)
你的Angular构建步骤不需要用到Docker服务,直接删除构建step下的services: - docker配置即可,8GB内存将全部分配给Node.js进程:
- 删除
Build angular app步骤下的如下配置:
services: - docker
- 将package.json中build命令的
max_old_space_size调整为7168(预留1GB系统内存,剩余7GB给Node):
"build": "node --max_old_space_size=7168 node_modules/@angular/cli/bin/ng build --configuration=calio"
方案2:调整内存配额(若确实需要Docker服务)
如果构建步骤必须使用Docker,可重新分配内存占比:
- 修改definitions下Docker的内存配额为2GB:
definitions: services: docker: memory: 2048
- 将build命令的
max_old_space_size调整为5120(总8GB-2GB Docker=6GB,预留1GB系统内存后剩余5GB给Node)
额外优化建议
- 若不需要生产环境sourcemap,可在angular.json中关闭sourcemap生成,大幅降低构建内存占用
- 升级Angular CLI到14+版本,高版本CLI的构建内存占用优化明显
- 检查package.json的scripts配置,删除错误的空
npm run后缀,避免冗余进程启动
内容的提问来源于stack exchange,提问作者SamuelPorchet
相关产品推荐
相关产品推荐

