> For the complete documentation index, see [llms.txt](https://camelgemonion.gitbook.io/docker/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://camelgemonion.gitbook.io/docker/dockerfile-zhi-ling/arg/automatic-platform-args-in-the-global-scope-quan-ju-zuo-yong-yu-zhong-zi-dong-hua-ping-tai-de-args.md).

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

这个特性只有在使用[**Buildkit**](https://docs.docker.com/engine/reference/builder/#buildkit)时才可以使用。

**docker**利用执行构建任务的平台的信息预先定义了一组**ARG**变量，这些变量在生成镜像的平台上（目标平台）。执行**docker build**时，可以通&#x8FC7;**--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"
```
