@valerka_shtirliz
Системный администратор, Junior DevOps

Как сделать NPM install при сборке docker image для билда в gitlab ci?

Автоматизировал билд node.js в .gitlab-ci.yml таким способом:

build:
    stage: build
    image: trion/ng-cli:latest
    script:
      - npm ci --loglevel verbose
      - ng build --prod --aot --output-hashing=all --serviceWorker
    artifacts:
      expire_in: 60 minutes
      paths:
        - ./dist/webpp
    interruptible: true
    tags:
      - docker
    only:
    - stage

Все работает но каждый раз npm install занимает время.
Хочу ооптимизировать этот процесс и установить npm в самом docker
пробовал собрать образ таким способом:

FROM trion/ng-cli:latest
COPY package.json package-lock.json angular.json ./
RUN npm install && npm install --loglevel verbose


и уже этот образ использовать для билда приложения:

build:
    stage: build
    image: имя образа
    script:
      - ng build --prod --aot --output-hashing=all --serviceWorker
    artifacts:
      expire_in: 60 minutes
      paths:
        - ./dist/webpp
    interruptible: true
    tags:
      - docker
    only:
    - stage

но не сработало, при билде выскакивает ошибка:
An unhandled exception occurred: Cannot find module '@angular-devkit/build-angular/package.json'

хотя модули по идее все установлены.

Пробовал еще такой образ, с тем же успехом.
FROM node:latest
COPY package.json package-lock.json angular.json ./
RUN npm install && npm install @angular-devkit/build-angular  --loglevel verbose

Можете посоветовать что делать?
  • Вопрос задан
  • 277 просмотров
Решения вопроса 1
karabanov
@karabanov Куратор тега Docker
Системный администратор
Можно кешировать node_modules.
Обсуждение вопроса Gitlab CI: npm doesn't like the cached node_modules

pnpm побыстрее npm можно воспользоваться им.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы