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

Angular单体仓库Docker构建时npm run build卡住求助

Angular Monorepo Docker构建停滞问题排查

在为Angular项目搭建单体仓库(monorepo)架构并尝试Docker容器化时,执行docker build命令构建镜像时,终端卡在npm run build阶段无限停滞,无法完成镜像构建;但在独立仓库中执行相同命令可成功构建。

Dockerfile配置

FROM node as builder

WORKDIR /app

COPY . /app

RUN npm i

RUN npm run build application-one

FROM nginx:1.17.1-alpine

COPY --from=builder /app/dist/docker-angular-app /usr/share/nginx/html

package.json配置

{
  "name": "angular-docker-practice",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "watch": "ng build --watch --configuration development",
    "test": "ng test"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^15.1.0",
    "@angular/common": "^15.1.0",
    "@angular/compiler": "^15.1.0",
    "@angular/core": "^15.1.0",
    "@angular/forms": "^15.1.0",
    "@angular/platform-browser": "^15.1.0",
    "@angular/platform-browser-dynamic": "^15.1.0",
    "@angular/router": "^15.1.0",
    "rxjs": "~7.8.0",
    "tslib": "^2.3.0",
    "zone.js": "~0.12.0"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^15.1.6",
    "@angular/cli": "~15.1.4",
    "@angular/compiler-cli": "^15.1.0",
    "@types/jasmine": "~4.3.0",
    "jasmine-core": "~4.5.0",
    "karma": "~6.4.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.2.0",
    "karma-jasmine": "~5.1.0",
    "karma-jasmine-html-reporter": "~2.0.0",
    "typescript": "~4.9.4"
  }
}

排查方向

  • Monorepo构建命令适配:当前npm run build application-one未正确转发参数到Angular CLI。Angular monorepo构建指定项目需用ng build application-one,可直接修改Dockerfile中的构建命令为RUN ng build application-one,或更新package.json的build脚本为"build": "ng build $@"以支持参数传递。
  • 依赖安装稳定性:Monorepo依赖结构复杂,用RUN npm ci替代RUN npm i,确保依赖版本与package-lock.json完全一致,避免依赖冲突导致的构建停滞。
  • 容器资源扩容:Docker默认资源限制可能不足以支撑monorepo构建,执行docker build --cpus 2 --memory 2g .增加CPU和内存分配。
  • 清除构建缓存:旧缓存可能干扰构建,添加--no-cache参数重新构建:docker build --no-cache .。
  • 开启详细日志:修改构建命令为RUN npm run build application-one -- --verbose,查看具体卡住的环节或错误信息。
  • 优化构建上下文:添加.dockerignore文件排除无关文件,减少构建上下文大小并避免干扰:
    node_modules/
    dist/
    .git/
    .angular/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:22:52