Как кэшировать зависимости Maven в DockerJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как кэшировать зависимости Maven в Docker

Сообщение Anonymous »

Я работаю над проектом с зависимостями размером ~200 МБ и хотел бы избежать бесполезной загрузки из-за ограниченной пропускной способности.
Когда я отправлю свой Dockerfile (я прикреплю это через мгновение), у меня всегда есть загрузка ~ 200 МБ, даже если я не трогал pom.xml:

Код: Выделить всё

FROM maven:3.6.0-jdk-8-slim

WORKDIR /app

ADD pom.xml /app

RUN mvn verify clean --fail-never

COPY ./src /app/src

RUN mvn package

ENV CONFIG_FOLDER=/app/config
ENV DATA_FOLDER=/app/data
ENV GOLDENS_FOLDER=/app/goldens
ENV DEBUG_FOLDER=/app/debug

WORKDIR target

CMD ["java","-jar","-Dlogs=/app/logs", "myProject.jar"]
Этот Dockerfile должен создать толстый JAR-файл размером 200 МБ, включая все зависимости. Вот почему загрузка ~ 200 МБ происходит каждый раз. Чего я хотел бы достичь, так это создать слой со всеми зависимостями и «сказать» фазе упаковки не включать JAR-файлы зависимостей в толстый JAR-файл, а искать их внутри заданного каталога.
Мне было интересно создать сценарий, который выполняет mvn dependency:copy-dependent перед процессом сборки, а затем копирует каталог в контейнер; затем создаем «нежирный» JAR-файл, в котором все эти зависимости только связаны, но не копируются в него.
Возможно ли это?
< Strong>EDIT:
Я обнаружил, что локальный репозиторий Maven контейнера расположен в /root/.m2. Итак, я закончил создание такого очень простого скрипта:
BuildDocker.sh

Код: Выделить всё

mvn verify -clean --fail-never
mv ~/.m2 ~/git/myProjectRepo/.m2

sudo docker build -t myName/myProject:"$1"
И отредактировал Dockerfile следующим образом:

Код: Выделить всё

# Use an official Python runtime as a parent image
FROM maven:3.6.0-jdk-8-slim

# Copy my Mavne Local Repository into the container thus creating a new layer
COPY ./.m2 /root/.m2

# Set the working directory to /app
WORKDIR /app

# Copy the pom.xml
ADD pom.xml /app

# Resolve and Download all dependencies: this will be done only if the pom.xml has any changes
RUN mvn verify clean --fail-never

# Copy source code and configs
COPY ./src /app/src

# create a ThinJAR
RUN mvn package

# Run the jar
...
После процесса сборки я заявил, что /root/.m2 содержит все каталоги. Но как только я запускаю JAR, я получаю:

Код: Выделить всё

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Priority
at myProject.ThreeMeans.calculate(ThreeMeans.java:17)
at myProject.ClusteringStartup.main(ClusteringStartup.java:7)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Priority
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
Может быть, не стоит запускать его через java -jar?

Подробнее здесь: https://stackoverflow.com/questions/536 ... -in-docker
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как кэшировать зависимости maven в Docker
    Anonymous » » в форуме JAVA
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Обертка Maven на M1 Mac: /meta-inf/maven/org.apache.maven.wrapper/maven-wrapper/pom.properties не найдено
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Обертка Maven на M1 Mac: /meta-inf/maven/org.apache.maven.wrapper/maven-wrapper/pom.properties не найдено
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Обертка Maven на M1 Mac: /meta-inf/maven/org.apache.maven.wrapper/maven-wrapper/pom.properties не найдено
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Обертка Maven на M1 Mac: /meta-inf/maven/org.apache.maven.wrapper/maven-wrapper/pom.properties не найдено
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»