如何解决Docker构建Angular 15项目时卡在RUN npm run build步骤的问题
Docker构建Angular 15项目卡在
RUN npm run build步骤 我通过ng new ng-sandbox-15创建了全新的Angular 15项目,复用了之前可正常运行的Angular 14项目的Dockerfile、.dockerignore和nginx.conf文件,但构建时始终卡在RUN npm run build步骤。从日志来看,Angular的构建任务已经在26.5秒内完成,但该Docker步骤却一直卡住超过20分钟。
相关文件内容
Dockerfile
FROM node:16-alpine as builder # Copy dependency definitions COPY package.json package-lock.json ./ # disabling ssl for npm for Dev or if you are behind proxy RUN npm set strict-ssl false ## installing and Storing node modules on a separate layer will prevent unnecessary npm installs at each build RUN npm ci && mkdir /app && mv ./node_modules ./app # Change directory so that our commands run inside this new directory WORKDIR /app # Get all the code needed to run the app COPY . /app/ # Build the application RUN npm run build FROM nginx:1.17-alpine ## From 'builder' copy published folder COPY --from=builder /app/dist /usr/share/nginx/html COPY nginx/nginx.conf /etc/nginx/nginx.conf # Expose the port the app runs in EXPOSE 4000 CMD ["nginx", "-g", "daemon off;"]
package.json
{ "name": "ng-sandbox-15", "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.2.0", "@angular/common": "^15.2.0", "@angular/compiler": "^15.2.0", "@angular/core": "^15.2.0", "@angular/forms": "^15.2.0", "@angular/platform-browser": "^15.2.0", "@angular/platform-browser-dynamic": "^15.2.0", "@angular/router": "^15.2.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.12.0" }, "devDependencies": { "@angular-devkit/build-angular": "^15.2.5", "@angular/cli": "~15.2.5", "@angular/compiler-cli": "^15.2.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" } }
问题细节
从截图可见,Angular构建任务已显示在26.5秒完成,但Docker的RUN npm run build步骤却持续卡住超过20分钟。之前见过类似问题,但不认同将构建命令放到CMD中的方案——这会导致容器启动时才执行构建,而镜像构建阶段就尝试复制未生成的dist目录到nginx,逻辑完全错误。
内容的提问来源于stack exchange,提问作者Kevin Dufendach
相关产品推荐
相关产品推荐

