Запуск двух проектов maven в отдельных контейнерах докеров - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть два приложения весенней загрузки Maven, и для этого я настроил два файла Docker.Внутри каждого контейнера я выполняю maven установку.Два контейнера выполняют большую загрузку для зависимостей и, наконец, упаковывают приложение.

Поскольку эти два контейнера построены последовательно, можно ли совместно использовать локальный репозиторий maven первого контейнера для второго контейнера, чтобыmaven установка второго контейнера пропустит локально доступную зависимость и получит только дополнительные библиотеки, упомянутые в его pom?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Вы не упомянули, в какой среде вы работаете, поэтому я хотел бы поделиться своим решением для Bitbucket Pipelines CI.

Мы строим наши ~ 20 контейнеров в Bitbucket Pipelines CI, и каждый контейнер представляет собой Java-приложение с почти одинаковым набором зависимостей. Bitbucket Pipelines CI использует образы Docker для запуска сборок (да, они используют образы Docker для построения образов Docker ). Существует возможность указать, какой образ Docker использовать для сборок.

Чтобы не загружать все зависимости снова и снова и сократить время сборки, я создал собственный образ Docker, который содержит все внешние зависимости всех наших модулей. Все зависимости были собраны с помощью команды Maven в каждом модуле:

mvn -Dmaven.repo.local=c:/projects/bitbucket-pipelines-baseimage/local-maven-repo clean install

После этого я удалил артефакты проекта из временного репозитория "c: / projects / bitbucket-pipelines-baseimage / local-maven-repo" и создал образ Docker, который включает этот временный репозиторий. Этот образ был развернут в Docker Hub, и теперь все наши сборки в Bitbucket Pipelines используют его. Время сборки значительно сократилось!

0 голосов
/ 13 апреля 2019

Да, вы можете.

Мы делаем что-то похожее, чтобы наши сборки всегда были чистыми. Но чтобы сэкономить время на загрузке maven, мы используем том докера, смонтированный в каталоге m2, чтобы загрузки могли использоваться между сборками и контейнерами докера.

docker run -v m2Repository:/root/.m2 some-image

docker run -v m2Repository:/root/.m2 some-other-image

Первый запуск занимает некоторое время, но следующие сборки выполняются намного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...