首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少没有高山的java应用程序的停靠图像大小?

如何减少没有高山的java应用程序的停靠图像大小?
EN

Stack Overflow用户
提问于 2022-03-23 18:00:09
回答 1查看 552关注 0票数 0

我在eclipse-temurin:11上构建了一个映像,它运行得很好,但是对于一个简单的spring-boot hello world webapp应用程序,它的结果是超过600 an。

问:我的文档是错的吗,或者我如何减少图像大小,而不需要打开高寒/麝香草?

代码语言:javascript
复制
# 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"]

也许有人看到了关于图像层大小的问题?

代码语言:javascript
复制
~$ 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层?

EN

回答 1

Stack Overflow用户

发布于 2022-03-23 18:10:37

一个简单的解决方案可以是使用11-jre映像用于运行时(eclipse-temurin:11-jre)。这将节省大约100 MB。其他一切似乎都与您的应用程序相关(考虑到11映像的大小约为220 MB )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71591947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档