Как упаковать зависимости pom.xml в образ Docker, используя в качестве основы образ Docker-Maven? - PullRequest
2 голосов
/ 28 марта 2019

Я пытаюсь упаковать зависимости из файла POM.xml в образ докера на этапе сборки образа, но когда я запускаю свою программу, она все равно загружает зависимости maven.

Образ докера, который я использую в качестве базового, является официальным изображением Docker-Maven от carlossg.

В инструкции указано: $MAVEN_CONFIG dir (по умолчанию /root/.m2) может быть настроен как том, поэтому все, что копируется в Dockerfile во время сборки, будет потеряно. Для этого создается каталог /usr/share/maven/ref/, и все, что там находится, будет скопировано при запуске контейнера в $MAVEN_CONFIG. По этой причине dir /usr/share/maven/ref/ существует, и все, что находится в этом каталоге, будет скопировано при запуске контейнера в $MAVEN_CONFIG.

И добавить следующее в Dockerfile:

COPY pom.xml /tmp/pom.xml
RUN mvn -B -f /tmp/pom.xml -s /usr/share/maven/ref/settings-docker.xml 
dependency:resolve

Итак, мой Dockerfile выглядит так:

FROM maven:3.6.0-jdk-8
WORKDIR /usr/src/app
COPY pom.xml /tmp/pom.xml
RUN mvn -f /tmp/pom.xml -s /usr/share/maven/ref/settings-docker.xml 
dependency:resolve

Затем я создаю образ докера с помощью следующей команды:

docker build -t [image_name] .

Затем я загружаю образ докера в репозиторий докеров и ссылаюсь на него в файле gitlab-ci.yml для запуска моих тестов. Тесты строятся и работают нормально, но все зависимости загружаются снова, что может занять некоторое время.

Я слежу за README здесь с официальной страницы:

https://github.com/carlossg/docker-maven

Чего-то не хватает в моем Dockerfile? Что еще мне нужно сделать, чтобы изображение не загружало все зависимости снова?

1 Ответ

0 голосов
/ 28 марта 2019

Если вы хотите, чтобы maven не связывался с хранилищем, запустите его с флагом -o.

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