Bake简介
目录
Bake是对docker build
命令的抽象,它允许您更轻松地以一致的方式管理构建配置(CLI标志、环境变量等),以便团队中的每个人都能使用。
Bake是Buildx CLI中内置的一个命令,因此只要安装了Buildx,您就可以通过docker buildx bake
命令访问bake。
使用Bake构建项目
这是一个简单的docker build
命令示例
$ docker build -f Dockerfile -t myapp:latest .
此命令构建当前目录中的Dockerfile,并将生成的镜像标记为myapp:latest
。
使用Bake表达相同的构建配置
docker-bake.hcl
target "myapp" {
context = "."
dockerfile = "Dockerfile"
tags = ["myapp:latest"]
}
Bake提供了一种结构化的方式来管理您的构建配置,它可以避免您每次都必须记住docker build
的所有CLI标志。使用此文件,构建镜像就像运行一样简单
$ docker buildx bake myapp
对于简单的构建,docker build
和docker buildx bake
之间的区别很小。但是,随着构建配置变得越来越复杂,Bake提供了一种更结构化的方式来管理这种复杂性,而这对于docker build
的CLI标志来说很难管理。它还提供了一种在团队中共享构建配置的方法,以便每个人都能以一致的方式、使用相同的配置来构建镜像。
Bake文件格式
您可以使用HCL、YAML(Docker Compose文件)或JSON编写Bake文件。一般来说,HCL是最具表现力和灵活性的格式,这就是为什么您会在本文档的大多数示例以及使用Bake的项目中看到它的原因。
可以为目标设置的属性与docker build
的CLI标志非常相似。例如,考虑以下docker build
命令
$ docker build \
-f Dockerfile \
-t myapp:latest \
--build-arg foo=bar \
--no-cache \
--platform linux/amd64,linux/arm64 \
.
Bake等效项将是
target "myapp" {
context = "."
dockerfile = "Dockerfile"
tags = ["myapp:latest"]
args = {
foo = "bar"
}
no-cache = true
platforms = ["linux/amd64", "linux/arm64"]
}
后续步骤
要了解有关使用Bake的更多信息,请参阅以下主题