- Использую CI & CD в GitLab: создаю docker-образ с Composer и NPM, делаю внутри composer install и npm install
- Загружаю образ в nexus-хранилище и ссылаюсь на него на следующей стадии (сборка фронтенда)
- Получаю проблему: 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
Вопросы:
- Как сделать так, чтобы npm на стадии билда увидел node_modules? Откуда их брать?
- Как деплоить: запускать докер-образ или можно билд из него выгрузить и передать специализированному инструменту для деплоя?