Bake 파일 참조
Bake 파일 참조 (Bake file reference)
Bake 파일에 쓸 수 있는 형식과 속성을 정리한 참조 문서예요. 빌드 정의를 어떤 형식으로 작성할지, 파일이 어떻게 병합되고 속성이 어떻게 우선하는지를 다룬답니다.
출처: 문서
본문
파일 형식 (File format)
Bake 파일은 다음 형식 중 하나로 정의할 수 있어요:
- HashiCorp Configuration Language (HCL)
- JSON
- YAML (Compose file)
기본적으로 Bake는 구성 파일을 찾기 위해 다음 순서로 탐색해요. -f(또는 --file) 플래그로 특정 파일을 지정할 수도 있어요:
$ docker buildx bake --file ../docker/bake.hcl --print
병합된 파일에 중복된 속성 정의가 있으면, 그 속성 종류에 따라 병합되거나 마지막 항목으로 오버라이드돼요. 다음 속성들은 마지막 항목으로 오버라이드돼요.
예시로, Compose 파일과 HCL 파일을 함께 로드한다고 해 봐요:
$ cat compose.yaml
services:
webapp:
build:
context: .
tags:
- bar
$ cat docker-bake.hcl
target "webapp" {
tags = ["foo"]
}
$ docker buildx bake --print webapp
{
"group": {
"default": {
"targets": [
"webapp"
]
}
},
"target": {
"webapp": {
"context": ".",
"dockerfile": "Dockerfile",
"tags": [
"foo"
]
}
}
}
tags 속성은 마지막에 정의된 값이 사용돼요. 반면 labels 같은 병합형 속성은 모든 항목이 포함되고, 같은 레이블의 중복 항목만 오버라이드돼요:
$ cat compose.yaml
services:
webapp:
build:
context: .
labels:
com.example.foo: "foo"
com.example.name: "Alice"
$ cat docker-bake.hcl
target "webapp" {
labels = {
"com.example.bar" = "bar"
"com.example.name" = "Bob"
}
}
$ docker buildx bake --print webapp
{
"group": {
"default": {
"targets": [
"webapp"
]
}
},
"target": {
"webapp": {
"context": ".",
"dockerfile": "Dockerfile",
"labels": {
"com.example.foo": "foo",
"com.example.bar": "bar",
"com.example.name": "Bob"
}
}
}
}
여기서 com.example.name은 마지막 값인 "Bob"으로 오버라이드되고, 나머지는 모두 유지돼요.
문법 (Syntax)
Bake 파일은 다음과 같은 속성 유형을 지원해요:
- 타깃 (target): 빌드 타깃 정의
- 그룹 (group): 타깃들의 컬렉션
- 변수 (variable): 기본값과 검증 규칙을 가진 변수
- 함수 (function): 사용자 정의 함수
- 전역 속성: 파일 전체에 적용되는 속성
각 속성의 정확한 이름과 타입, 동작은 원본 문서의 상세 표에서 확인할 수 있어요. 기술적 토큰(속성명, 값)은 원문 그대로 유지돼요.