跳到主要内容

容器镜像

DeepSeek V3 中英对照 Container Images

Spring Boot 应用程序可以通过 使用 Dockerfiles 或者 使用 Cloud Native Buildpacks 进行容器化,以创建可以在任何地方运行的优化 Docker 兼容容器镜像。

章节摘要

📄️ 高效的容器镜像

可以轻松地将 Spring Boot uber jar 打包为 Docker 镜像。然而,直接将 uber jar 复制并运行在 Docker 镜像中存在各种缺点。在不解压的情况下运行 uber jar 时,总是会有一定的开销,而在容器化环境中,这种开销可能会更加明显。另一个问题是,将应用程序代码及其所有依赖项放在 Docker 镜像的一个层中并不是最优的。由于你可能比升级 Spring Boot 版本更频繁地重新编译代码,因此通常最好将内容稍微分开一些。如果将 jar 文件放在应用程序类之前的层中,Docker 通常只需要更改最底层的文件,并从缓存中获取其他层。

📄️ Dockerfile

虽然可以使用 Dockerfile 中的几行代码将 Spring Boot 的 uber jar 转换为 Docker 镜像,但使用分层功能将生成一个经过优化的镜像。当你创建一个包含分层索引文件的 jar 时,spring-boot-jarmode-tools jar 将作为依赖项添加到你的 jar 中。在类路径上有这个 jar 的情况下,你可以以一种特殊模式启动你的应用程序,这种模式允许引导代码运行与你的应用程序完全不同的内容,例如提取分层的操作。