Я упаковал свое приложение Node.js / Angular, используя Docker, и настроил GitLab Runner для развертывания одним щелчком, чтобы развернуть изменения на работающем сервере.
docker-compose.yml
:
version: "3"
services:
client:
build:
context: ...
dockerfile: ...
...
server:
build:
context: ...
dockerfile: ...
...
Проблема в том, что когда сборка достигает этой части в Dockerfile
:
ng build --prod
Всегда происходит сбой, и я получаю сообщение об ошибке памяти на сервере (1 ГБ ОЗУ).
"build-prod": "ng build --prod --aot=true --buildOptimizer=true",
Есть ли обходной путь, помимо создания файлов на моем локальном компьютере и их фиксации в хранилище, и просто копирования / вставки этих файлов?
Dockerfile
для client
:
# STAGE 1 - Build app
FROM node:12-alpine as client
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build-prod
#STAGE 2: Run NGINX
FROM nginx
COPY --from=client /app/dist/* /var/www/html
COPY default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
ОБНОВЛЕНИЕ:
Я попытался использовать max_old_space_size
, но сборка все равно не удалась, хотя на этот раз ошибка другая:
![enter image description here](https://i.stack.imgur.com/wwSL3.png)
Перед использованием max_old_space_size
сборка обычно уже происходит сбой сразу после Browserslist: caniuse-lite is outdated. Please run next command npm update
, но здесь ей удалось обойти это.