Ich baue ein Docker-Bild von dieser Dockerfile:Caching Jar Abhängigkeiten für Maven-basierte Docker baut
FROM maven:3.3.3-jdk-8
MAINTAINER Mickael BARON
ADD pom.xml /work/pom.xml
WORKDIR /work
RUN mvn dependency:go-offline --fail-never
ADD ["src", "/work/src"]
RUN ["mvn", "package"]
Mit diesem Dockerfile, ich zwinge die Abhängigkeiten herunterladen, bevor mein Java-Projekt Verpackung. Daher muss ich die Abhängigkeiten nicht jedes Mal neu herunterladen, wenn ich eine Datei aus meinem src-Verzeichnis ändere.
Aber es gibt ein Problem und dieses Problem hängt von der Version von Maven (Basisbild) ab. Tatsächlich werden die Abhängigkeiten heruntergeladen, aber sie werden nicht im Verzeichnis ~/.m2 des Containers gespeichert. Es ist leer. Wenn ich also eine Quelldatei ändere, werden alle Abhängigkeiten neu heruntergeladen.
Allerdings habe ich festgestellt, dass, wenn ich die Version von Maven aus dem Basisbild (zum Beispiel FROM maven:3.2.5-jdk-8
) ändern, es funktioniert.
Sehr seltsam, nicht wahr?
Gestartet eine frühere Version ohne die '.m2' Lautstärke mit und es funktioniert –
Hier ist ein Problem, verschiedene Menschen Beschwerden über Tracking, wie die' VOLUME' Anweisung funktioniert: https://github.com/docker/docker/issues/3639 # issuecomment-229490630 – sirlatrom