@goodw84

Как собрать фронтенд на основе docker-образа?

  1. Использую CI & CD в GitLab: создаю docker-образ с Composer и NPM, делаю внутри composer install и npm install
  2. Загружаю образ в nexus-хранилище и ссылаюсь на него на следующей стадии (сборка фронтенда)
  3. Получаю проблему: npm WARN Local package.json exists, but node_modules missing, did you mean to install?


Исходные данные:
.gitlab-ci.yml
stages:
  - dockerize
  - update-modules
  - build

dockerize:
    <<: *common
    <<: *shared
    stage: dockerize
    script:
        - docker build --build-arg DOCKER_REGISTRY -t ${DOCKER_REGISTRY}/${APP_NAME}:${VERSION} . -f ./docker/php-fpm/Dockerfile
        - docker push ${DOCKER_REGISTRY}/${APP_NAME}:${VERSION}
    when: manual

build-frontend:
  <<: *rules-default
  <<: *common
  <<: *docker
  image: ${DOCKER_REGISTRY}/${APP_NAME}:${VERSION}
  stage: build
  script: npm run prod


Dockerfile:
ARG DOCKER_REGISTRY
FROM $DOCKER_REGISTRY/php:7.4.7-fpm
USER root

RUN apt -y update
RUN apt -y --no-install-recommends install unzip wget curl libaio1 openssl

WORKDIR /app

RUN curl -sS https://getcomposer.org/installer -o composer-setup.php \
    && php composer-setup.php --install-dir=/usr/local/bin --filename=composer
RUN composer install --no-dev && rm ./composer-setup.php

RUN npm install npm@latest -g

Вопросы:
  1. Как сделать так, чтобы npm на стадии билда увидел node_modules? Откуда их брать?
  2. Как деплоить: запускать докер-образ или можно билд из него выгрузить и передать специализированному инструменту для деплоя?
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы