Bake 표준 라이브러리 함수

Bake 표준 라이브러리 함수 (Bake standard library functions)

Bake는 HCL의 표준 라이브러리 함수들을 기본 내장하고 있어요. 이 함수들은 문자열 조작, 산술 연산, 인코딩, 파일·경로 처리 등 다양한 작업에 쓰입니다.

출처: 문서

본문

각 함수를 Bake 파일의 args 값 등에서 ${함수(...)} 형태로 호출해요. 몇 가지 대표적인 함수를 예시와 함께 살펴볼게요.

숫자 관련 함수

절대값과 덧셈 계산:

# docker-bake.hcl
target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp:latest"]
  args = {
    val = "${absolute(-42)}" # => 42
  }
}
# docker-bake.hcl
target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp:latest"]
  args = {
    result = "${add(123, 1)}" # => 124
  }
}

논리 함수

and로 두 값을 논리곱:

# docker-bake.hcl
target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp:latest"]
  args = {
    result = "${and(true, false)}" # => false
  }
}

인코딩 함수

base64 디코딩/인코딩:

# docker-bake.hcl
target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp:latest"]
  args = {
    decoded = "${base64decode("SGVsbG8=")}" # => "Hello"
  }
}
# docker-bake.hcl
target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp:latest"]
  args = {
    encoded = "${base64encode("Hello")}" # => "SGVsbG8="
  }
}

파일·경로 함수

경로에서 파일명 추출, 바이트 길이·슬라이스, bcrypt 해시:

# docker-bake.hcl
target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp:latest"]
  args = {
    file = "${basename("/usr/local/bin/docker")}" # => "docker"
  }
}
# docker-bake.hcl
target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp:latest"]
  args = {
    hash = "${bcrypt("mypassword")}" # => "$2a$10$..."
  }
}
# docker-bake.hcl
target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp:latest"]
  args = {
    length = "${byteslen("Docker")}" # => 6
  }
}
# docker-bake.hcl
target "webapp-dev" {
  dockerfile = "Dockerfile.webapp"
  tags = ["docker.io/username/webapp:latest"]
  args = {
    part = "${bytesslice("Docker", 0, 3)}" # => "Doc"
  }
}

이 외에도 Bake에 내장된 표준 라이브러리에는 문자열, 컬렉션, 날짜·시간, 파일시스템, IP/네트워크, 매핑, 인코딩 등 수많은 함수가 있어요. 필요한 함수의 정확한 시그니처는 HCL 표준 라이브러리 문서에서 확인할 수 있어요.

더 알아보기 (Learn more)