У меня есть сервер Jenkins, на котором я наблюдаю частный репозиторий git на предмет изменений, который затем запускает конвейерный сценарий (репозиторий содержит приложение nodejs). В этом конвейерном скрипте мне нужно сделать следующие шаги:
- Установить зависимости (
npm install
)
- Создайте мое приложение (
npm run build
, которое создает папку dist
)
- Сборка контейнера Docker (
docker build
) и запуск контейнера (который запускает скрипт в папке dist
)
Какой из следующих двух вариантов будет рекомендуемым способом сделать это и почему?
Вариант A: Запустите npm install
и npm run build
в конвейере jenkins и скопируйте папку dist
в контейнер докера во время сборки докера. Это позволило бы мне устанавливать только зависимости времени выполнения в док-контейнере, используя npm install --only=production
, что значительно уменьшало размер изображения.
Опция B: Выполнить npm install
и npm run build
во время сборки докера (в Dockerfile). Это позволило бы мне запускать Docker-контейнер за пределами CI-сервера, если мне нужно (сейчас у меня нет варианта использования, но он выглядит чище, потому что он более независим). Тем не менее, размер изображения значительно увеличится, и я не уверен, что это рекомендуемый способ.
Есть предложения?