node.js - Docker 中的 ng build --prod 非常慢

标签 node.js angular docker angular-cli-v6

当我尝试在 docker 中构建一个 angular7 项目时,大约需要 40 分钟。耗时40分钟的线路是

ng 构建 --prod

92% 区 block Assets 优化 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 以查看不同编译阶段的准确时间)

关于node.js - Docker 中的 ng build --prod 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55757966/

相关文章:

java - 在 docker 中设置 java home

javascript - 正则表达式查找并替换文件 Javascript 中的文件路径

mongodb - Docker Compose MongoDB Config/etc/mongodb.conf : Is a Directory

node.js - 运行项目后报错: read ENOTCONN: Nodejs,

angular - Primeng 按钮不显示标签

angular - 计算事件的绑定(bind)数

javascript - 将 ngFor 循环的最后一个元素滚动到 View 中

docker - Portainer:客户端向 HTTPS 服务器发送 HTTP 请求 - 尽管 URL 是 https://

node.js - Nodejs、Mongoose、Jquery 小部件

javascript - 使用 nodejs 连接到 mLab 数据库时出现错误并出现弃用警告