如何为 bazel container_image 规则指定等效的 Dockerfile 运行?
How to specify equivalent of Dockerfile RUN for bazel container_image rule?
我正在将 Dockerfile 转换为 bazel container_image
规则。我如何为 container_image
指定 RUN
规范?
container_run_and_commit 将 运行 命令并用结果创建一个新图层,这类似于 RUN
。像这样:
load("@io_bazel_rules_docker//docker/util:run.bzl", "container_run_and_commit")
container_run_and_commit(
name = "x",
commands = ["touch /xyz"],
image = ":my_base.tar",
)
image
参数是一个 docker save
风格的 tarball。您可以通过外部存储库引入它,或使用 container_image
规则的隐式 .tar
输出。如果您在同一个包中有 container_image(name = "my_base")
,我上面的示例将起作用。
我不知道这是否是您的用例,但如果它适用于其他人,
如果您只是想使用 bazel run :my_container
在容器映像上执行 docker run
类型的执行。
您可以通过将 legacy_run_behavior
设置为 false 来实现。此属性没有明确记录,因为我认为它是单独的包管理器规则的一部分。
container_image(
name = "image",
base = "my_base_image",
legacy_run_behavior = False,
tars = [
"my_files",
],
)
我正在将 Dockerfile 转换为 bazel container_image
规则。我如何为 container_image
指定 RUN
规范?
container_run_and_commit 将 运行 命令并用结果创建一个新图层,这类似于 RUN
。像这样:
load("@io_bazel_rules_docker//docker/util:run.bzl", "container_run_and_commit")
container_run_and_commit(
name = "x",
commands = ["touch /xyz"],
image = ":my_base.tar",
)
image
参数是一个 docker save
风格的 tarball。您可以通过外部存储库引入它,或使用 container_image
规则的隐式 .tar
输出。如果您在同一个包中有 container_image(name = "my_base")
,我上面的示例将起作用。
我不知道这是否是您的用例,但如果它适用于其他人,
如果您只是想使用 bazel run :my_container
在容器映像上执行 docker run
类型的执行。
您可以通过将 legacy_run_behavior
设置为 false 来实现。此属性没有明确记录,因为我认为它是单独的包管理器规则的一部分。
container_image(
name = "image",
base = "my_base_image",
legacy_run_behavior = False,
tars = [
"my_files",
],
)