Bake에서의 변수
Bake에서의 변수 (Variables in Bake)
Bake 파일에서 변수를 정의하고 사용해 속성 값을 설정하거나, 다른 값에 보간(interpolate)하거나, 산술 연산을 할 수 있어요. 변수는 기본값(default)을 가질 수 있고, 환경 변수로 오버라이드할 수 있답니다.
출처: 문서
본문
속성 값으로 변수 사용하기 (Using variables as attribute values)
variable 블록으로 변수를 정의해요:
variable "TAG" {
default = "docker.io/username/webapp:latest"
}
정의한 변수를 타깃에서 사용해요:
target "webapp" {
context = "."
dockerfile = "Dockerfile"
tags = [ TAG ]
}
값에 변수 보간하기 (Interpolate variables into values)
${...} 구문으로 변수 값을 다른 문자열에 보간할 수 있어요:
variable "TAG" {
default = "latest"
}
group "default" {
targets = [ "webapp" ]
}
variable "TAG" {
default = "latest"
}
target "webapp" {
context = "."
dockerfile = "Dockerfile"
tags = ["docker.io/username/webapp:${TAG}"]
}
--print 플래그로 해석된 빌드 구성에서 보간된 값을 확인할 수 있어요:
$ docker buildx bake --print
{
"group": {
"default": {
"targets": ["webapp"]
}
},
"target": {
"webapp": {
"context": ".",
"dockerfile": "Dockerfile",
"tags": ["docker.io/username/webapp:latest"]
}
}
}
변수 검증 (Validating variables)
variable 블록 안에 validation 블록을 넣어 변수 값에 조건을 검증할 수 있어요. 예를 들어 PORT 변수는 반드시 1024 이상이어야 한다고 지정해 봐요:
# `PORT` 변수를 기본값과 검증 규칙과 함께 정의
variable "PORT" {
default = 3000 # `PORT`에 할당되는 기본값
# `PORT`가 수용 가능한 범위 내의 유효한 숫자인지 보장하는 검증 블록
validation {
condition = PORT >= 1024 # `PORT`는 최소 1024여야 함
error_message = "The variable 'PORT' must be 1024 or greater." # 잘못된 값에 대한 오류 메시지
}
}
조건이 거짓이면 검증에 실패하고 오류가 발생해요. 검증을 수행하기 전에 값은 기대 타입으로 강제 변환돼요. 따라서 환경 변수 등으로 오버라이드한 값도 예상 타입으로 처리된 뒤 검증돼요.