Docker 如何用bazel实现基于架构的图像抽取

Docker 如何用bazel实现基于架构的图像抽取,docker,architecture,arm,bazel,amd,Docker,Architecture,Arm,Bazel,Amd,我正在运行bazel并使用规则容器\u规则拉\u docker。 容器有一个架构属性。 在CI和一些开发机器中,体系结构是amd。 在新的m1 Mac中,体系结构是arm 如何配置bazel在amd机器和arm机器上拉amd?最简单的方法是使用两个容器拉取规则和。在您的工作区中: container\u pull( name=“thing\u amd”, architecture=“amd64”, ) 集装箱拉力( name=“thing\u arm”, architecture=“arm”,

我正在运行bazel并使用规则容器\u规则拉\u docker。 容器有一个架构属性。 在CI和一些开发机器中,体系结构是amd。 在新的m1 Mac中,体系结构是arm


如何配置bazel在amd机器和arm机器上拉amd?

最简单的方法是使用两个容器拉取规则和。在您的
工作区中

container\u pull(
name=“thing\u amd”,
architecture=“amd64”,
)
集装箱拉力(
name=“thing\u arm”,
architecture=“arm”,
)
然后在一些
构建
文件中:


配置设置(
name=“k8”,
约束_值=[“@platforms//cpu:x86_64”],
)
配置设置(
name=“arm”,
约束值=[“@platforms//cpu:arm”],
)
别名(
name=“thing”,
实际=选择({
“:k8”:“@thing\u amd//image”,
“:arm”:“@thing\u arm//image”,
}),
)
如果要进行重复数据消除(特别是如果您有两个以上的CPU),请使用以下选项。创建一个变量中包含所有CPU的
.bzl
文件,然后创建一个宏来创建所有
容器库(从
工作区加载并调用该库),并创建另一个宏来创建
配置设置
和从该
构建
文件加载并调用的
别名