我在eclipse-temurin:11上构建了一个映像,它运行得很好,但是对于一个简单的spring-boot hello world webapp应用程序,它的结果是超过600 an。
问:我的文档是错的吗,或者我如何减少图像大小,而不需要打开高寒/麝香草?
# syntax=docker/dockerfile:1
FROM maven:3.8.4-eclipse-temurin-11 as build
WORKDIR application
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src src
RUN mvn package
RUN cp /application/target/*.jar application.jar
RUN java -Djarmode=layertools -jar application.jar extract
FROM eclipse-temurin:11
WORKDIR application
COPY --from=build application/dependencies/ ./
COPY --from=build application/spring-boot-loader/ ./
COPY --from=build application/snapshot-dependencies/ ./
COPY --from=build application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]也许有人看到了关于图像层大小的问题?
~$ docker history myimage:latest
IMAGE CREATED CREATED BY SIZE COMMENT
e628830c54bf About an hour ago /bin/sh -c #(nop) ENTRYPOINT ["java" "org.s… 0B
87d052d04e27 About an hour ago /bin/sh -c #(nop) COPY dir:5d09192487cc563d9… 13.8kB
8c34a91b2cfb About an hour ago /bin/sh -c #(nop) COPY dir:8b993266a653e9e77… 0B
d4e71b50b4da About an hour ago /bin/sh -c #(nop) COPY dir:8b86bf42f46c065b7… 252kB
fbc788f64a4a About an hour ago /bin/sh -c #(nop) COPY dir:961713675a0647292… 26.4MB
fa2564232f74 2 hours ago /bin/sh -c #(nop) WORKDIR /application 0B
3dbb3240fc1f 4 days ago /bin/sh -c #(nop) CMD ["jshell"] 0B
<missing> 4 days ago /bin/sh -c echo Verifying install ... &&… 0B
<missing> 4 days ago /bin/sh -c #(nop) ENV JAVA_HOME=/opt/java/o… 0B
<missing> 4 days ago /bin/sh -c set -eux; ARCH="$(dpkg --prin… 322MB
<missing> 4 days ago /bin/sh -c #(nop) ENV JAVA_VERSION=jdk-11.0… 0B
<missing> 4 days ago /bin/sh -c apt-get update && DEBIAN_FRON… 43.2MB
<missing> 4 days ago /bin/sh -c #(nop) ENV LANG=en_US.UTF-8 LANG… 0B
<missing> 5 days ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 5 days ago /bin/sh -c #(nop) ADD file:1d3b09cf9e041d608… 72.8MB 问题似乎在于322 is层,其中完整的jdk被下载到容器中:
4 days ago /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in aarch64|arm64) ESUM='79572f5172c6a040591d34632f98a20ed148702bbce2f57649e8ac01c0d2e3db'; BINARY\_URL='https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk\_aarch64\_linux\_hotspot\_11.0.14.1\_1.tar.gz'; ;; armhf|arm) ESUM='f4d53a1753cdde830d7872c6a1279df441f3f9aeb5d5037a568b3a392ebce9c2'; BINARY\_URL='https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk\_arm\_linux\_hotspot\_11.0.14.1\_1.tar.gz'; ;; ppc64el|powerpc:common64) ESUM='9750e11721282a9afd18a07743f19c699b2b71ce20d02f3f0a906088b9ae6d9a'; BINARY\_URL='https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk\_ppc64le\_linux\_hotspot\_11.0.14.1\_1.tar.gz'; ;; s390x|s390:64-bit) ESUM='79a27a4dc23dff38a5c21e5ba9b7efcf0aa5e14ace1a3b19bec53e255c487521'; BINARY\_URL='https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk\_s390x\_linux\_hotspot\_11.0.14.1\_1.tar.gz'; ;; amd64|i386:x86-64) ESUM='43fb84f8063ad9bf6b6d694a67b8f64c8827552b920ec5ce794dfe5602edffe7'; BINARY\_URL='https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk\_x64\_linux\_hotspot\_11.0.14.1\_1.tar.gz'; ;; \*) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; curl -LfsSo /tmp/openjdk.tar.gz ${BINARY\_URL}; echo "${ESUM} \*/tmp/openjdk.tar.gz" | sha256sum -c -; mkdir -p /opt/java/openjdk; cd /opt/java/openjdk; tar -xf /tmp/openjdk.tar.gz --strip-components=1; rm -rf /tmp/openjdk.tar.gz; 322MB
我如何在这里减少java层?
发布于 2022-03-23 18:10:37
一个简单的解决方案可以是使用11-jre映像用于运行时(eclipse-temurin:11-jre)。这将节省大约100 MB。其他一切似乎都与您的应用程序相关(考虑到11映像的大小约为220 MB )。
https://stackoverflow.com/questions/71591947
复制相似问题