gpt4 book ai didi

java - 如何减小我的 java/gradle docker 镜像大小?

转载 作者:IT老高 更新时间:2023-10-28 12:47:19 25 4
gpt4 key购买 nike

我有一个 Docker 文件,如下所示:

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" ]

问题是最终图像大小为 1.1GB,我知道这是因为 gradle 下载并存储了所有依赖项。删除那些不必要的文件并保留 jar 的最佳方法是什么?

最佳答案

我真的对你的图片大小感到困惑。我有典型的 Spring Boot 应用程序,提供 REST 服务,包括不到 200MB 的嵌入式 servlet 容器!看起来您的项目依赖项可以而且应该进行优化。

Docker 镜像

openjdk:8(243MB 压缩)可以替换为具有缩减的 Alpine unix 镜像,例如 openjdk:8-jdk-alpine (52MB) 作为基础图片,但如果您不需要编译器功能(例如,不使用 JSP),您也可以选择仅包含运行时的 openjdk:8-jre-alpine (42MB),查看Docker Hub .我将它用于基于 Spring Boot 的 REST 服务,效果很好。

Java 依赖项

必须包含编译和运行时所需的 Java 依赖项,但您可能包含未使用的依赖项:

  • 检查您的依赖关系,当前编译/运行时依赖关系是否真正使用过,或者是否可以删除或移动以进行测试,请参阅 Gradle Java Plugin
  • 一些依赖有很多传递依赖(使用gradle dependencies显示),检查不必要的,如果不使用就排除它们,见Gradle Dependency Management .确保在最终应用之前进行集成测试,一些传递依赖项没有很好的文档记录,但可能是必不可少的!

关于java - 如何减小我的 java/gradle docker 镜像大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40958062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com