Automatic platform ARGs in the global scope(全局作用域中自动化平台的ARGS)

这个特性只有在使用Buildkit时才可以使用。

docker利用执行构建任务的平台的信息预先定义了一组ARG变量,这些变量在生成镜像的平台上(目标平台)。执行docker build时,可以通过--platform来指定目标平台。

下面的ARG变量都是自动设置的:

  • TARGETPLATFORM - 目标平台. 例如linux/amd64, linux/arm/v7, windows/amd64.

  • TARGETOS - 目标平台的操作系统

  • TARGETARCH- 目标平台的架构

  • TARGETVARIANT - 目标平台的辩题

  • BUILDPLATFORM- 执行构建的节点平台

  • BUILDOS- 构建平台的操作系统

  • BUILDARCH - 构建平台的架构

  • BUILDVARIANT - 构建平台的变体

这些参数定义在全局作用域中,因此这些变量在构建阶段或RUN命令中并不会自动可用。为了能够在构建阶段中暴露并使用这些参数,需要通过ARG指令重新声明一个不带值的同名变量。

例如:

FROM alpine
ARG TARGETPLATFORM
RUN echo "I'm building for $TARGETPLATFORM"

Last updated