S2I 工作流程和逻辑
有关如何在 KubeSphere 中使用 S2I 的更多信息,请参考 Source to Image:无需 Dockerfile 发布应用。此外,您还可以参考代码仓库 和 S2IRun 查看更多详细信息。
对于 Python 和 Ruby 等解释型语言,程序的构建环境和运行时环境通常是相同的。例如,基于 Ruby 的镜像构建器通常包含 Bundler、Rake、Apache、GCC 以及其他构建运行时环境所需的安装包。构建的工作流程如下图所示:
S2I 执行以下步骤:
- 根据镜像构建器运行容器,并将应用程序的源代码注入到指定目录中。
- 将镜像构建器中提供的
run
脚本设置为启动容器的镜像入口点,然后提交新的镜像作为供用户使用的应用程序镜像。
S2I 流程图如下:
对于 Go、C、C++、Java 等编译型语言,编译时所需的依赖项会增加最终镜像的大小。为构建更轻量的镜像,S2I 实行分阶段构建,并从镜像中移除非必要的文件。镜像构建器完成构建后会导出制品,制品可能是 Jar 文件或二进制文件等可执行文件,然后会将制品注入运行时镜像 (Runtime Image) 用于执行。
构建的工作流程如下: