Bake 中的表达式计算
目录
HCL 格式的烘焙文件支持表达式计算,这使 执行算术运算、有条件地设置值等。
算术运算
您可以在表达式中执行算术运算。以下示例 演示如何将两个数字相乘。
docker-bake.hcl
sum = 7*6
target "default" {
args = {
answer = sum
}
}
使用--print
flag 显示
这answer
build 参数。
$ docker buildx bake --print app
{
"target": {
"default": {
"context": ".",
"dockerfile": "Dockerfile",
"args": {
"answer": "42"
}
}
}
}
三元运算符
您可以使用三元运算符有条件地注册一个值。
以下示例仅在变量不为空时添加标签,使用
内置notequal
功能。
docker-bake.hcl
variable "TAG" {}
target "default" {
context="."
dockerfile="Dockerfile"
tags = [
"my-image:latest",
notequal("",TAG) ? "my-image:${TAG}": "",
]
}
在这种情况下,TAG
是一个空字符串,因此生成的 build 配置
仅包含硬编码的my-image:latest
标记。
$ docker buildx bake --print
{
"group": {
"default": {
"targets": ["default"]
}
},
"target": {
"webapp": {
"context": ".",
"dockerfile": "Dockerfile",
"tags": ["my-image:latest"]
}
}
}
带变量的表达式
您可以使用带有变量的表达式来有条件地设置 值或执行算术运算。
以下示例使用表达式根据
变量。这v1
build 参数设置为 “higher” 时,如果变量FOO
是
大于 5,否则设置为 “lower”。这v2
build 参数
设置为 “yes” 时,如果IS_FOO
variable 为 true,否则设置为 “no”。
docker-bake.hcl
variable "FOO" {
default = 3
}
variable "IS_FOO" {
default = true
}
target "app" {
args = {
v1 = FOO > 5 ? "higher" : "lower"
v2 = IS_FOO ? "yes" : "no"
}
}
使用--print
flag 显示
这v1
和v2
build 参数。
$ docker buildx bake --print app
{
"group": {
"default": {
"targets": ["app"]
}
},
"target": {
"app": {
"context": ".",
"dockerfile": "Dockerfile",
"args": {
"v1": "lower",
"v2": "yes"
}
}
}
}