Очень медленная сборка --prod в Docker - PullRequest
2 голосов
/ 19 апреля 2019

Когда я пытаюсь создать проект angular7 в докере, это занимает около 40 минут. Линия, которая занимает 40 минут:

ng build --prod

92% оптимизация чанка активов TerserPlugin

Я запустил 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

1 Ответ

9 голосов
/ 19 апреля 2019

Эта проблема с очень медленными сборками почти всегда связана с тем, что процессу сборки не хватает памяти.

Узел не выделит много памяти для одного процесса (512 МБ в 32-битных системах и1 ГБ в 64-битных системах), но для работы ng build с производственными настройками требуется много памяти.

Вы можете использовать параметр узла max_old_space_size, чтобы указать, сколько ОЗУ вы разрешаете использовать процессу, но у вас естьчтобы передать параметр непосредственно узлу, замените

ng build --prod

на

node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod

, чтобы выделить для процесса до 8 ГБ ОЗУ, что ускорит его работу.

Вы также можете добавить это к своим сценариям в package.json:

"scripts": {
  ....
  "build:prod": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --prod"
 }

( Если увеличение лимита памяти не работает, попробуйте запустить ng build --prod --verbose, чтобы увидеть точные значения времени дляразные фазы компиляции )

...