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."  # 잘못된 값에 대한 오류 메시지
  }
}

조건이 거짓이면 검증에 실패하고 오류가 발생해요. 검증을 수행하기 전에 값은 기대 타입으로 강제 변환돼요. 따라서 환경 변수 등으로 오버라이드한 값도 예상 타입으로 처리된 뒤 검증돼요.

더 알아보기 (Learn more)