[英]Very Slow ng build --prod in Docker
當我嘗試在 docker 中構建一個 angular7 項目時,大約需要 40 分鍾。 需要40分鍾的線路是
ng build --prod
92% 區塊資產優化 TerserPlugin
我在同一台筆記本電腦上在 docker 外部運行 ng build --prod 需要 2 分鍾。
我試過添加 --build-optimizer false
和 --sourceMap=false
沒有任何區別
這是我的 Dockerfile
FROM node:carbon
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
RUN npm install
RUN npm install -g @angular/cli@6.1.0
COPY . .
RUN ng build --prod
EXPOSE 4200
CMD [ "npm", "start" ]
HEALTHCHECK --interval=5s --timeout=30s --retries=20 CMD curl --fail http://localhost:4200 || exit 1
這個構建速度極慢的問題幾乎總是與構建過程內存不足有關。
Node 不會為單個進程分配大量內存(在 32 位系統上為 512mb,在 64 位系統上為 1gb),但是使用生產設置運行ng build
會使用大量內存。
您可以使用 Node 參數max_old_space_size
來設置允許進程使用多少 RAM,但是您必須將參數直接傳遞給 node 所以替換
ng build --prod
和
node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod
它將為進程分配多達 8GB 的 RAM,這將使它運行得更快。
您還可以將其添加到 package.json 中的腳本中:
"scripts": {
....
"build:prod": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --prod"
}
(如果增加內存限制不起作用,請嘗試運行ng build --prod --verbose
以查看編譯不同階段的確切時間)
正如 Daniel 在回答中提到的,您可以使用節點參數--max_old_space_size
但我更喜歡通過環境變量進行設置:
NODE_OPTIONS=--max-old-space-size=4096
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.