У меня есть некоторые проблемы с созданием образа docker и созданием приложения с помощью шага сборки образа maven by docker с использованием dockerfile. Я должен собрать свое приложение в докере на этапе сборки и загрузить зависимости maven из локального репозитория maven, но я понятия не имею, как я могу это сделать? Это мой dockerfile:
FROM maven:3.6.2-jdk-8 as maven_local_repo
WORKDIR /build
ARG MVN_USER
ARG MVN_PASS
COPY pom.xml /build/pom.xml
COPY /.mvn/settings.xml /usr/share/maven/ref/settings.xml
RUN mvn -B -f /build/pom.xml -s /usr/share/maven/ref/settings.xml dependency:resolve
ARG BASE_IMAGE_TAG
FROM ubuntu as java_build
RUN apt-get update
ARG MVN_USER
ARG MVN_PASS
WORKDIR /app
COPY ./ ./
COPY --from=maven_local_repo /usr/share/maven/ref/repository /usr/share/maven/ref/repository
RUN find ./scripts -type f -exec dos2unix {} \; -exec chmod +x {} \; && \
./scripts/build.sh
, а это мой settings.xml
файл:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/usr/share/maven/ref/repository</localRepository>
</settings>
и мой build.sh
файл:
find -type f -name mvnw -exec dos2unix {} \; -exec chmod +x {} \;
./mvnw -s .mvn/settings.xml --batch-mode clean package
, но когдаЯ запускаю команду сборки docker в терминале:
docker build -t myApp --build-arg MVN_USER="${MVN_USER}" --build-arg MVN_PASS="${MVN_PASS}" ~/IdeaProjects/myApp
Этот процесс сборки всегда загружает зависимости maven из удаленного хранилища maven, но мне нужно скачать из локального хранилища maven из файла settings.xml
.
Что я делаю не так? Пожалуйста, помогите мне! Я новичок в Maven, и если вы можете привести мне полный пример, как я могу это исправить, пожалуйста.