使用 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
调用可修复时间戳。
我正在构建一个 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
调用可修复时间戳。