如何减少 Java 应用程序的 docker 镜像大小

时间:2021-05-03 20:25:26

标签: java docker java-8 docker-multi-stage-build

我有以下 dockerfile 代码,但是超过 500mb 的图像太大了。我尝试使用多阶段构建以减小大小,但之后 kubernetes 部署将无法工作。

FROM openjdk:8
ADD target/name_id.jar name_id.jar
EXPOSE 8080
ENTRYPOINT [ "java","-jar","name_id.jar" ]

有了这个文件就可以了。有人能帮我吗? 对于项目本身,使用了 maven 和 springboot。如果我更改代码中的某些内容,我也必须每次都清理安装 jar。

2 个答案:

答案 0 :(得分:0)

是否可以使用 openjdk:8-alpine,基础镜像大小为 144.9MB。

使用下图缩小尺寸 • openjdk:8-jre-alpine:84 MB

或者您也可以尝试分别安装 5 MB 和 openjdk 的 alpine os 并检查大小

答案 1 :(得分:0)

就我个人而言,当我想到最小化 docker 镜像时会想到两件事

  1. 基础图片
  2. 多阶段构建

让我试着回答你的问题 我会使用小的 jdk 图像,即 openjdk:8-alpine 如果我想在 Dockerfile 中创建 jar 文件并执行它,我会使用它。在这种情况下,您只想使用现有的 jar 文件。

既然您已经拥有并想使用名为 name_id.jar 的 jar 文件, 然后你只需要 java 运行时环境,即 openjdk:8-jre-alpine 而不是 openjdk:8-alpine