docker buildx bake

描述从文件构建
用法docker buildx bake [OPTIONS] [TARGET...]
别名
docker buildx f

描述

Bake 是一个高级构建命令。每个指定的目标并行运行 作为构建的一部分。

阅读 High-level build options with Bake guide 了解如何编写烘焙文件。

注意

buildx bakeCommand 将来可能会收到向后不兼容的功能 如果需要。我们正在寻找有关改进命令和扩展的反馈 功能进一步。

选项

选择违约描述
--allow允许生成访问指定的资源
--callbuild设置评估 build 的方法 (check,outline,targets)
--check的简写--call=check
-f, --file构建定义文件
--load的简写--set=*.output=type=docker
--metadata-file将构建结果元数据写入文件
--no-cache构建镜像时不要使用缓存
--print打印选项而不构建
--progressauto设置进度输出的类型 (auto,plain,tty,rawjson).使用 plain 显示容器输出
--provenance的简写--set=*.attest=type=provenance
--pull始终尝试拉取所有引用的镜像
--push的简写--set=*.output=type=registry
--sbom的简写--set=*.attest=type=sbom
--set覆盖目标值(例如targetpattern.key=value)

例子

覆盖配置的生成器实例 (--builder)

等同buildx --builder.

调用前端方法 (--call)

等同build --call.

调用: check (--check)

等同build --check.

指定构建定义文件 (-f, --file)

使用-f / --file选项以指定要使用的构建定义文件。 该文件可以是 HCL、JSON 或 Compose 文件。如果指定了多个文件,则 读取所有配置并组合构建配置。

您可以传递要构建的目标的名称,以仅构建特定目标。 以下示例构建dbwebapp-release目标 在docker-bake.dev.hcl文件:

# docker-bake.dev.hcl
group "default" {
  targets = ["db", "webapp-dev"]
}

target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp"]
}

target "webapp-release" {
  inherits = ["webapp-dev"]
  platforms = ["linux/amd64", "linux/arm64"]
}

target "db" {
  dockerfile = "Dockerfile.db"
  tags = ["docker.io/username/db"]
}
$ docker buildx bake -f docker-bake.dev.hcl db webapp-release

有关更多详细信息,请参阅 Bake file 参考

将构建结果元数据写入文件 (--metadata-file)

buildx build --metadata-file但 为每个目标写入结果映射,例如:

# docker-bake.hcl
group "default" {
  targets = ["db", "webapp-dev"]
}

target "db" {
  dockerfile = "Dockerfile.db"
  tags = ["docker.io/username/db"]
}

target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp"]
}
$ docker buildx bake --load --metadata-file metadata.json .
$ cat metadata.json
{
  "buildx.build.warnings": {},
  "db": {
    "buildx.build.provenance": {},
    "buildx.build.ref": "mybuilder/mybuilder0/0fjb6ubs52xx3vygf6fgdl611",
    "containerimage.config.digest": "sha256:2937f66a9722f7f4a2df583de2f8cb97fc9196059a410e7f00072fc918930e66",
    "containerimage.descriptor": {
      "annotations": {
        "config.digest": "sha256:2937f66a9722f7f4a2df583de2f8cb97fc9196059a410e7f00072fc918930e66",
        "org.opencontainers.image.created": "2022-02-08T21:28:03Z"
      },
      "digest": "sha256:19ffeab6f8bc9293ac2c3fdf94ebe28396254c993aea0b5a542cfb02e0883fa3",
      "mediaType": "application/vnd.oci.image.manifest.v1+json",
      "size": 506
    },
    "containerimage.digest": "sha256:19ffeab6f8bc9293ac2c3fdf94ebe28396254c993aea0b5a542cfb02e0883fa3"
  },
  "webapp-dev": {
    "buildx.build.provenance": {},
    "buildx.build.ref": "mybuilder/mybuilder0/kamngmcgyzebqxwu98b4lfv3n",
    "containerimage.config.digest": "sha256:9651cc2b3c508f697c9c43b67b64c8359c2865c019e680aac1c11f4b875b67e0",
    "containerimage.descriptor": {
      "annotations": {
        "config.digest": "sha256:9651cc2b3c508f697c9c43b67b64c8359c2865c019e680aac1c11f4b875b67e0",
        "org.opencontainers.image.created": "2022-02-08T21:28:15Z"
      },
      "digest": "sha256:6d9ac9237a84afe1516540f40a0fafdc86859b2141954b4d643af7066d598b74",
      "mediaType": "application/vnd.oci.image.manifest.v1+json",
      "size": 506
    },
    "containerimage.digest": "sha256:6d9ac9237a84afe1516540f40a0fafdc86859b2141954b4d643af7066d598b74"
  }
}

注意

构建记录来源 (buildx.build.provenance) 默认包含最小来源。将BUILDX_METADATA_PROVENANCE环境变量自定义此行为:

  • min设置 最小出处 (默认)。
  • max设置完全出处。
  • disabled,false0不设置任何 provenance。

注意

生成警告 (buildx.build.warnings) 默认不包含。将BUILDX_METADATA_WARNINGS环境变量设置为1true自 包括它们。

构建镜像时不使用缓存 (--no-cache)

等同build --no-cache.构建镜像时不要使用缓存。

打印选项而不构建 (--print)

在 JSON 中打印要构建的目标的结果选项 格式,而无需启动构建。

$ docker buildx bake -f docker-bake.hcl --print db
{
  "group": {
    "default": {
      "targets": [
        "db"
      ]
    }
  },
  "target": {
    "db": {
      "context": "./",
      "dockerfile": "Dockerfile",
      "tags": [
        "docker.io/tiborvass/db"
      ]
    }
  }
}

设置进度输出的类型 (--progress)

等同build --progress.

创建出处证明 (--provenance)

等同build --provenance.

始终尝试拉取较新版本的镜像 (--pull)

等同build --pull.

创建 SBOM 证明 (--sbom)

等同build --sbom.

从命令行覆盖目标配置 (--set)

--set targetpattern.key[.subkey]=value

从命令行覆盖目标配置。模式匹配语法 在 https://golang.org/pkg/path/#Match 中定义。

$ docker buildx bake --set target.args.mybuildarg=value
$ docker buildx bake --set target.platform=linux/arm64
$ docker buildx bake --set foo*.args.mybuildarg=value # overrides build arg for all targets starting with 'foo'
$ docker buildx bake --set *.platform=linux/arm64     # overrides platform for all targets
$ docker buildx bake --set foo*.no-cache              # bypass caching only for targets starting with 'foo'

您可以覆盖以下字段:

  • args
  • cache-from
  • cache-to
  • context
  • dockerfile
  • labels
  • load
  • no-cache
  • no-cache-filter
  • output
  • platform
  • pull
  • push
  • secrets
  • ssh
  • tags
  • target