如何使用 bazel rules_docker 中的 container_image 或 container_layer 为 empty_dir 定义所有者?
How can I define an owner to an empty_dir using container_image or container_layer from bazel rules_docker?
从实现 empty_dirs 的 PR 来看,似乎支持将目录所有者(使用名称参数)和模式定义到 TarFile add_empty_dir 方法中 class.
但是 container_image 规则(和 container_layer)仅支持模式。
这个有效:
container_image(
name = "with_empty_dirs",
empty_dirs = [
"etc",
"foo",
"bar",
],
mode = "0o777",
)
但是这个 returns 错误:“错误:(...) 'container_image_' 规则中没有这样的属性 'names'”:
container_image(
name = "with_empty_dirs",
empty_dirs = [
"etc",
"foo",
"bar",
],
names = "nginx",
)
如果我们想添加对 empty_dirs 所有者的支持,是否需要“write a customized container_image”?
在 BUILD 文件中,您要查找的属性是 ownername
。有关详细信息,请参阅 pkg_tar reference documentation 文档。另外,我认为你不能直接将它传递给 container_image
,你必须先创建一个单独的 pkg_tar
。像这样:
pkg_tar(
name = "with_empty_dirs_tar",
empty_dirs = [
"etc",
"foo",
"bar",
],
ownername = "nginx.nginx",
)
container_image(
name = "with_empty_dirs",
tars = [":with_empty_dirs_tar"],
)
一般来说,container_image
有一个 pkg_tar
的子集作为直接属性来创建简单形式的添加文件,但对于复杂的用例,你应该自己创建一个 pkg_tar
访问 adding/arranging 个文件的所有功能并设置其所有权。
您在 PR 中看到的 names
是 Python 辅助工具中的一个变量,BUILD 文件规则将其用作实现的一部分。您在 BUILD 文件中编写的内容与 Python 代码之间存在抽象层。
从实现 empty_dirs 的 PR 来看,似乎支持将目录所有者(使用名称参数)和模式定义到 TarFile add_empty_dir 方法中 class.
但是 container_image 规则(和 container_layer)仅支持模式。
这个有效:
container_image(
name = "with_empty_dirs",
empty_dirs = [
"etc",
"foo",
"bar",
],
mode = "0o777",
)
但是这个 returns 错误:“错误:(...) 'container_image_' 规则中没有这样的属性 'names'”:
container_image(
name = "with_empty_dirs",
empty_dirs = [
"etc",
"foo",
"bar",
],
names = "nginx",
)
如果我们想添加对 empty_dirs 所有者的支持,是否需要“write a customized container_image”?
在 BUILD 文件中,您要查找的属性是 ownername
。有关详细信息,请参阅 pkg_tar reference documentation 文档。另外,我认为你不能直接将它传递给 container_image
,你必须先创建一个单独的 pkg_tar
。像这样:
pkg_tar(
name = "with_empty_dirs_tar",
empty_dirs = [
"etc",
"foo",
"bar",
],
ownername = "nginx.nginx",
)
container_image(
name = "with_empty_dirs",
tars = [":with_empty_dirs_tar"],
)
一般来说,container_image
有一个 pkg_tar
的子集作为直接属性来创建简单形式的添加文件,但对于复杂的用例,你应该自己创建一个 pkg_tar
访问 adding/arranging 个文件的所有功能并设置其所有权。
您在 PR 中看到的 names
是 Python 辅助工具中的一个变量,BUILD 文件规则将其用作实现的一部分。您在 BUILD 文件中编写的内容与 Python 代码之间存在抽象层。