Bake 타깃
Bake 타깃 (Bake targets)
Bake에서 타깃(target)은 빌드 구성을 담는 핵심 단위예요. 각 타깃에 Dockerfile, 태그, 컨텍스트 등을 정의하고, 빌드 명령으로 원하는 타깃을 지정해 실행할 수 있어요.
출처: 문서
본문
타깃 정의하기
타깃은 target 블록으로 정의해요:
target "webapp" {
dockerfile = "webapp.Dockerfile"
tags = ["docker.io/username/webapp:latest"]
context = "https://github.com/username/webapp"
}
빌드할 때 타깃 이름을 인자로 넘겨요:
$ docker buildx bake webapp
여러 타깃을 한 번에 빌드하려면 이름을 공백으로 구분해 나열하면 돼요:
$ docker buildx bake webapp api tests
기본 타깃 (Default target)
인자 없이 docker buildx bake를 실행하면 default라는 이름의 타깃이 빌드돼요:
target "default" {
dockerfile = "webapp.Dockerfile"
tags = ["docker.io/username/webapp:latest"]
context = "https://github.com/username/webapp"
}
$ docker buildx bake
타깃 속성 (Target properties)
타깃 속성은 docker build 명령의 플래그와 대부분 대응돼요. 여기에 Bake만의 몇 가지 추가 속성이 더 있어요. 예를 들어 dockerfile은 컨텍스트를 기준으로 상대 경로로 해석돼요:
target "default" {
context = "app"
# resolves to app/src/www/Dockerfile
dockerfile = "src/www/Dockerfile"
}
타깃에 설정할 수 있는 모든 속성은 Bake 참조(reference) 문서에서 확인할 수 있어요.
타깃 그룹 (Grouping targets)
group 블록으로 여러 타깃을 하나로 묶어 한 번에 빌드할 수 있어요:
group "all" {
targets = ["webapp", "api", "tests"]
}
target "webapp" {
dockerfile = "webapp.Dockerfile"
tags = ["docker.io/username/webapp:latest"]
context = "https://github.com/username/webapp"
}
target "api" {
dockerfile = "api.Dockerfile"
tags = ["docker.io/username/api:latest"]
context = "https://github.com/username/api"
}
target "tests" {
dockerfile = "tests.Dockerfile"
contexts = {
webapp = "target:webapp"
api = "target:api"
}
output = ["type=local,dest=build/tests"]
context = "."
}
그룹 이름으로 빌드하면 그룹 안의 모든 타깃이 빌드돼요:
$ docker buildx bake all
타깃·그룹 패턴 매칭 (Pattern matching for targets and groups)
Bake는 타깃이나 그룹을 지정할 때 셸 스타일의 와일드카드 패턴을 지원해요. 덕분에 각각을 일일이 나열하지 않고도 여러 타깃을 쉽게 빌드할 수 있어요.
지원되는 패턴:
*: 임의의 문자 시퀀스와 매칭- (그 외 셸 와일드카드 문법)