Ich habe ein Docker wie die folgende Datei:Wie reduziere ich meine Java/Gradle Docker Bildgröße?
FROM openjdk:8
ADD . /usr/share/app-name-tmp
WORKDIR /usr/share/app-name-tmp
RUN ./gradlew build \
mv ./build/libs/app-name*.jar /usr/share/app-name/app-name.jar
WORKDIR /usr/share/app-name
RUN rm -rf /usr/share/app-name-tmp
EXPOSE 8080
RUN chmod +x ./docker-entry.sh
ENTRYPOINT [ "./docker-entry.sh" ]
Das Problem ist, dass die endgültige Bildgröße 1,1 GB ist, ich weiß, geschieht es, weil gradle herunter und speichert alle Abhängigkeiten. Was ist der beste Weg, um diese unnötigen Dateien zu entfernen und nur das Glas zu halten?
Das Basisbild könnte ein wenig beitragen, aber das ist die echte Antwort. Leider hat Docker die "verschachtelten Builds" nicht angesprochen (https://github.com/docker/docker/issues/7115). Die Art und Weise, wie ich mich im Allgemeinen damit beschäftigt habe, hat getrennte "Build" - und "Runtime" -Bilder, um die Docker-Beschränkungen zu handhaben. Sehen Sie [diesen Artikel] (https://www.fpcomplete.com/blog/2015/12/docker-split-images) für einen möglichen Weg, mit dem Problem umzugehen. – mkobit
@mkobit Sie können jetzt mehrstufige Builds verwenden, um dieses Problem zu adressieren https://docs.docker.com/engine/userguide/eng-image/multistage-build/ –
@ GuidoGarcía guten Punkt! Könnte eine gute Gelegenheit für eine neue Antwort sein oder um diese zu verbessern. – mkobit