使用 rules_docker 的 container_image 规则创建的图像中文件的时间戳均设置为零

Timestamps of files in image created with rules_docker's container_image rule are all set to zero

我正在构建一个 docker 图像,调用如下:

load(
"@io_bazel_rules_docker//container:container.bzl",
"container_image"
)

container_image(
name = "image",
base = "@nginx//image",
files = ["nginx.conf"],
symlinks = {
    "/etc/nginx/nginx.conf": "/nginx.conf",
},
tars = [":build_tar"],
tags = ["catalog"],

)

如您所见,该图像应该包含 tar 存档的内容,可从 target :build_tar 获得,以及 nginx.conf 文件. 问题是生成的图像内容的所有时间戳(从 tar 存档和 nginx.conf 文件中获取的文件)都设置为零(即 1970 年 1 月 1 日午夜)。

container_image 规则似乎没有保留时间戳。我该如何解决这个问题?

修复它的一种方法是获取您想要作为容器基础的图像,部署它,然后在它 运行 时将文件复制到其中,最后重新打包以进行部署。

我知道这并不理想,但从我所做的搜索来看,这是每个人都建议这样做的方式。

我只是想补充一点,我不完全理解图像的用途,所以我可能完全错误地修复它。

enable_mtime_preservation = True 参数添加到 container_image 调用可修复时间戳。