Привязать файл .m2 к докеру на этапе сборки - PullRequest
0 голосов
/ 25 августа 2018

Я пытался собрать проект весенней загрузки в Docker-контейнере на основе приведенного ниже Docker-файла. Но каждый раз все зависимости mvn загружаются из Интернета.Как я могу связать локальный файл .m2, когда я строю файл Docker.

Это мой Dockerfile

FROM maven:3.5-jdk-8-alpine AS build 
COPY /src /usr/src/javaspring/src
COPY pom.xml /usr/src/javaspring
COPY Dockerfile /usr/src/javaspring
RUN mvn -f /usr/src/javaspring/pom.xml clean install


FROM openjdk:8-jre-alpine
COPY --from=build /usr/src/javaspring/target/javaspring-1.0.jar app.jar
ENTRYPOINT [“java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

1 Ответ

0 голосов
/ 25 августа 2018

Вы должны смонтировать содержимое вашего проекта в образ докера и $HOME/.m2/ в образ вместо того, чтобы копировать все в образ и создать новый образ.

$PWD - это локальныйкаталог, в котором находится файл pom.xml, а каталог src существует ...

docker run -it --rm \
  -v "$PWD":/usr/src/mymaven \ (1)
  -v "$HOME/.m2":/root/.m2 \ (2)
  -v "$PWD/target:/usr/src/mymaven/target" \ (3)
  -w /usr/src/mymaven \ (4)
  maven:3.5-jdk-8-alpine \ (5)
  mvn clean package
  1. определяет местоположение вашего рабочего каталога, в котором находится pom.xml.
  2. определяет местоположение, в котором вы разместили локальный кеш.
  3. определяет целевой каталог для сопоставления его с образом по указанному пути
  4. определяет рабочий каталог.
  5. определяет имя изображения, которое будет использоваться.

Так что вам не нужно создавать новое изображение, чтобы создавать свои вещи с помощью Maven.Просто запустите существующий образ с помощью следующей команды:

docker run -it --rm \
  -v "$PWD":/usr/src/mymaven \
  -v "$HOME/.m2":/root/.m2 \
  -v "$PWD/target:/usr/src/mymaven/target" \ 
  -w /usr/src/mymaven \
  maven:3.5-jdk-8-alpine mvn clean package
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...