【发布时间】:2021-07-17 14:23:59
【问题描述】:
我是 Docker 新手,并且阅读了很多关于它的内容。但是当我从 Java 应用程序的角度来看它时,我不确定它在“打包依赖项”方面做了什么增值,这是他们文档中提到的重要因素之一。
Java 已经是一种可以使用 JVM 层抽象在多个操作系统上运行的语言。构建一次,随处运行并不是新概念。 Docker 容器确实允许我将我的 JRE 版本与我的应用程序代码一起发布。所以我看到了这种好处,但我还有其他好处吗,特别是当我的环境(主机环境)不会改变时。即我将使用 Linux 机器进行部署。
fat jar 文件与使用 maven build 打包所有依赖项一样好。我知道容器确实有助于在 Kubernetes 等平台上部署,但是如果我必须从包装问题上严格判断容器,jar 包还不够吗?我可能仍然需要将其容器化以从运行轻量级进程中受益,而不是在 VM 上运行它们。
JRE 层是否在所有其他容器中被重用?这类似于在我的 VM 机器上安装 JRE。盒子上的所有应用程序都将使用相同的 JRE 版本。除非,我需要为我的应用程序运行不同版本的 JRE,这是极不可能的。
【问题讨论】:
-
这是一篇关于 fat jar vs docker image phauer.com/2019/no-fat-jar-in-docker-image 的有趣文章
标签: java docker kubernetes