【问题标题】:Spring Boot 2.3.0 buildpack builds image with creation date 40 years agoSpring Boot 2.3.0 buildpack 构建创建日期为 40 年前的镜像
【发布时间】:2020-11-02 01:02:17
【问题描述】:

我尝试在运行 Spring Boot 2.3.0 的 maven 项目中使用 buildpack:

mvn spring-boot:build-image

图像创建得很好,但我看到了以下信息:

REPOSITORY                                    TAG                     IMAGE ID            CREATED             SIZE
gcr.io/paketo-buildpacks/builder              base-platform-api-0.3   daceb4f909b7        40 years ago        690MB
myimage                                       master                  a482a4a34379        40 years ago        285MB

为什么说图片(连同建造者)是 40 年前创建的?

【问题讨论】:

标签: java spring-boot maven buildpack


【解决方案1】:

这是意料之中的。为了创建可重现的构建(即可以重用层),构建包必须创建具有固定时间戳的层。否则,您将无法重用您在之前构建中创建的层,因为它们具有不同的时间戳。

【讨论】:

  • 层不是基于哈希重用的吗?我真的不明白它与时间戳有什么关系,以及为什么不能指定真正的时间戳。能详细点吗?
  • 文件的时间戳改变了哈希值。许多下一代容器构建器(buildpacks、jib、ko)使用固定的、非零时间戳值来保证图像可重现性
  • 这不是“预期的”。似乎构建者无法弄清楚如何创建有效的哈希,而是使用了假时间戳。
  • 这是许多其他工具(ko、jib 等)所做的。在这里解释:medium.com/buildpacks/time-travel-with-pack-e0efd8bf05db
  • 虽然其他工具确实也提供此选项,但它们当然也提供使用当前时间的选项,因为这是大多数人所期望的。当使用开箱即用的 Quarkus(使用 jib)时,我们得到了预期的当前时间戳。在 spring boot 中将 docker builder 替换为 jib 时,我们可以将创建时间设置为 USE_CURRENT_TIMESTAMP 并获得所需的结果。在 buildpack 中也支持这一点怎么样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 2019-07-13
  • 1970-01-01
  • 2021-04-07
  • 2020-09-24
  • 2022-11-27
  • 1970-01-01
相关资源
最近更新 更多