知识卡片

Buildpacks的源码到镜像抽象

专业/工作 · 518.j.1

内容

Cloud Native Buildpacks 提供了一层比 Dockerfile 更高的抽象:不需要手写指令一步步描述怎么装运行时、怎么拷贝文件,而是直接把应用源码交给 Buildpacks,由它自动判断该用什么基础镜像、怎么编译、怎么打包,产出一个可运行的镜像。为了保证可复现构建——同样的输入应该总是产出同样的结果——它甚至用固定的约定时间戳(1980年1月1日)标记镜像创建时间,而不是记录真实构建时间,因为真实时间戳会让”内容完全相同的两次构建”在校验时被误判成不同的镜像。发散:这个约定时间戳的小细节体现了可复现构建的严格程度——连”看起来无关紧要”的元数据都要剔除掉不确定性来源,这和函数式编程里”纯函数不能依赖当前时间”是同一类约束。

参考来源

《Cloud Native Spring in Action》第2章《Cloud native patterns and technologies》