在构建多平台镜像时, 如果从本地复制到容器的文件, 区分指令集, 那么可以使用以下方法来根据不同平台的指令集进行区分
1
2
3
4
5
6
7
FROM ubuntu:22.04
LABEL maintainer="gomyck"
ARG TARGETARCH
COPY mongo_tools/mongodump_${TARGETARCH} /usr/local/bin/mongodump
这些变量是 Docker BuildKit 和 buildx 自动注入的,无需定义 ARG,直接可以 ARG 使用。
| 内置变量 | 说明 | 示例值 | 
|---|---|---|
TARGETARCH | 
      构建目标的 CPU 架构 | amd64, arm64, arm | 
    
TARGETOS | 
      构建目标的操作系统 | linux, windows | 
    
TARGETVARIANT | 
      架构变种(如 v7、v8,主要用于 ARM) | 
      v7, v8 | 
    
BUILDPLATFORM | 
      当前构建机的平台(build host) | linux/amd64 | 
    
TARGETPLATFORM | 
      构建目标平台(buildx 设置的平台) | linux/arm64 |