Когда я отправлю свой 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"]
Мне было интересно создать сценарий, который выполняет 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"
Код: Выделить всё
# 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
...
Код: Выделить всё
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
Подробнее здесь: https://stackoverflow.com/questions/536 ... -in-docker