如何在 Skaffold 配置中设置构建输出平台 x86_64?
How do I set the build output platform x86_64 in a Skaffold configuration?
由于我是在 M1 mac 上开发的,所以我的 Docker 构建将构建 ARM。我想构建 x86_64 图像,我知道我可以使用 --platform
标志构建这些图像,但我想使用我的 Skaffold 配置来构建它。
Skaffold 有 buildCommand
字段,您可以向其传递自定义脚本。
所以,例如
...
build:
artifacts:
- image: "foo"
context: .
custom:
buildCommand: ./build.sh
...
build.sh
docker buildx build \
--platform linux/amd64
... # any other flags
免责声明:以下所有内容均为猜测。我目前无法对此进行测试,但我相信如果我错了,有人会纠正我。
还有 build.artifacts.docker
字段(目前处于测试阶段)。可以使用此字段将参数传递给 Docker build.
...
build:
artifacts:
- image: "foo"
context: .
docker:
dockerfile: <Dockerfile relative to workspace>
target: <Dockerfile target name to build>
buildArgs:
platform: linux/amd64
local:
useDockerCLI: true #this is needed to use docker build CLI rather than Docker Engine API
可能还需要将 buildx
设置为 Docker 的默认生成器。这可以通过
来实现
docker buildx install
感谢@p10l 让我走上了正确的轨道,我才能够弄明白。 Skaffold 无法使用 Docker Engine API 设置平台,所以我们需要通过将 useDockerCLI
设置为 true
并添加来将 --platform=linux/x86_64
传递给命令行cliFlags
到我们的 Docker 配置。
apiVersion: skaffold/v2beta26
kind: Config
build:
# ... other unrelated config ...
artifacts:
- image: my-image
context: ./
docker:
cliFlags:
- --platform=linux/x86_64
local:
useDockerCLI: true # the only way to set platform is with cliFlags so we need to enable the Docker CLI
由于我是在 M1 mac 上开发的,所以我的 Docker 构建将构建 ARM。我想构建 x86_64 图像,我知道我可以使用 --platform
标志构建这些图像,但我想使用我的 Skaffold 配置来构建它。
Skaffold 有 buildCommand
字段,您可以向其传递自定义脚本。
所以,例如
...
build:
artifacts:
- image: "foo"
context: .
custom:
buildCommand: ./build.sh
...
build.sh
docker buildx build \
--platform linux/amd64
... # any other flags
免责声明:以下所有内容均为猜测。我目前无法对此进行测试,但我相信如果我错了,有人会纠正我。
还有 build.artifacts.docker
字段(目前处于测试阶段)。可以使用此字段将参数传递给 Docker build.
...
build:
artifacts:
- image: "foo"
context: .
docker:
dockerfile: <Dockerfile relative to workspace>
target: <Dockerfile target name to build>
buildArgs:
platform: linux/amd64
local:
useDockerCLI: true #this is needed to use docker build CLI rather than Docker Engine API
可能还需要将 buildx
设置为 Docker 的默认生成器。这可以通过
docker buildx install
感谢@p10l 让我走上了正确的轨道,我才能够弄明白。 Skaffold 无法使用 Docker Engine API 设置平台,所以我们需要通过将 useDockerCLI
设置为 true
并添加来将 --platform=linux/x86_64
传递给命令行cliFlags
到我们的 Docker 配置。
apiVersion: skaffold/v2beta26
kind: Config
build:
# ... other unrelated config ...
artifacts:
- image: my-image
context: ./
docker:
cliFlags:
- --platform=linux/x86_64
local:
useDockerCLI: true # the only way to set platform is with cliFlags so we need to enable the Docker CLI