Docker 1.12を使用します。なんらかの理由で、Gradle 2.14プロジェクトであるDockerコンテナをビルドすると、fat JARがビルドされ、ローカルに格納されます。問題は、単一の太いJARがDockerイメージに格納されているにもかかわらず、それぞれ約300MBの4つの新しいレイヤーが作成されることです。Docker Gradleプロジェクトは単一のJARを生成しますが、4つのレイヤーを再構築します。
なぜ1つのファイルに非常に多くのスペースが必要かわかりません。このDockerfileを今後どのように最適化すれば、それを防ぐことができますか?
JARをコンテナの外に作成してコピーする必要がありますか?
FROM anapsix/alpine-java:8_jdk
WORKDIR/
RUN mkdir /build
COPY . /build
WORKDIR /build
RUN mkdir /app
RUN cp ./lib/machine-learning-models.jar /app/machine-learning-models.jar
RUN bash gradlew shadowJar
RUN cp ./build/libs/server-0.1-SNAPSHOT-all.jar /app/server.jar
WORKDIR/
RUN rm -rf /build
EXPOSE 8000
ENTRYPOINT java -cp /app/machine-learning-models.jar:/app/server.jar com.company.Boot
ありがとうございました!
興味深いことに、JARファイルが2つの異なるコマンドで区切られていると、ディスク容量が非常に大きくなるのはなぜですか? (根底にある原因) – crockpotveggies