Я использую Jenkins, который создает новый контейнер докеров для выполнения задания. По завершении задания контейнер удаляется.
Каждый раз, когда запускается установка mvn, зависимости maven загружаются из репозитория Maven. Поскольку для каждого задания создается новый док-контейнер, зависимости maven не хранятся локально и должны загружаться каждый раз.
То же самое и с нашими пакетами npm, которые загружаются каждый раз, когда мы запускаем npm install.
Я надеялся, что появится способ загрузить все зависимые пакеты в образ докера, который используется для запуска заданий Jenkins. Это приведет к одноразовой загрузке, и ее не придется загружать каждый раз.
Вот файл докеров, который я пытался использовать, но он не работал с зависимостями maven -
FROM ubuntu:trusty
RUN apt-get -qq update && apt-get -q -y install maven
USER jenkins
COPY pom.xml /tmp/pom.xml
RUN mvn dependency:resolve -f /tmp/pom.xml
Используя новый образ, зависимости maven по-прежнему загружались из репозитория mvn, а не из локального репо. Что-то также нужно сделать для пакетов npm, используя файл package.json.
🤔 А знаете ли вы, что...
Node.js имеет огромное количество библиотек и модулей, доступных через npm (Node Package Manager).
Если вам нужен данные для сохранения при использовании контейнеров Docker, вы должны использовать тома. Итак, для Maven попробуйте связать каталог контейнера ~/.m2
с некоторым каталогом на хосте, в котором будут храниться все загруженные зависимости.