Java SpringBoot2.3.0BuildPack构建映像的创建日期为40年前

Java SpringBoot2.3.0BuildPack构建映像的创建日期为40年前,java,spring-boot,maven,buildpack,Java,Spring Boot,Maven,Buildpack,我曾尝试在运行Spring Boot 2.3.0的maven项目中使用buildpack: mvn spring-boot:build-image 图像创建得很好,但我看到了以下信息: REPOSITORY TAG IMAGE ID CREATED SIZE gcr.io/paketo-buildpacks/builder

我曾尝试在运行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年前创建的?

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

层不是基于哈希重用的吗?我真的不明白它和时间戳有什么关系,为什么不能指定真正的时间戳。你能详细说明一下吗?文件的时间戳会改变散列。许多下一代容器构建器(buildpacks、jib、ko)使用固定的、不完全为零的时间戳值来保证图像的再现性这不是“预期的”。似乎建设者不知道如何创建有效的散列,而是使用了一个假时间戳。这是许多其他工具(ko、jib等)所做的。此处解释:虽然其他工具也提供了此选项,但它们当然也提供了使用当前时间的选项,因为这是大多数人所期望的。使用Quarkus开箱即用(使用jib)时,我们会得到预期的当前时间戳。在spring boot中用jib替换docker builder时,我们可以设置创建时间以使用当前时间戳并获得所需的结果。在buildpack中也支持它怎么样?在buildpack repo:中找到这个,链接到。仍然不确定这与树立形象有什么关系。