Я пытаюсь упаковать зависимости из файла 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? Что еще мне нужно сделать, чтобы изображение не загружало все зависимости снова?