Bake 소개
Bake 소개 (Introduction to Bake)
Bake는 빌드 구성을 CLI 플래그, 환경 변수 등으로 일일이 넘기지 않고 선언적 파일로 관리하게 해 주는 명령어예요. 팀의 모든 사람이 같은 방식으로, 같은 구성으로 이미지를 일관되게 빌드할 수 있게 도와줘요.
출처: 문서
본문
Bake로 프로젝트 빌드하기 (Building a project with Bake)
먼저 일반적인 Docker Build 명령으로 이미지를 빌드한다고 생각해 봐요:
$ docker build -f Dockerfile -t myapp:latest .
이제 같은 빌드 구성을 Bake로 표현하면 이렇게 돼요:
target "myapp" {
context = "."
dockerfile = "Dockerfile"
tags = ["myapp:latest"]
}
이 파일을 한 번 만들고 나면 이미지 빌드는 단순히 다음 명령 하나로 끝나요:
$ docker buildx bake myapp
복잡한 CLI 옵션을 매번 타이핑하지 않아도 돼요. 또한 빌드 구성을 팀 전체와 공유할 수 있어서, 모두가 동일한 구성으로 일관성 있게 이미지를 빌드하게 돼요.
Bake 파일 형식 (The Bake file format)
Bake 파일은 HCL 또는 JSON로 작성할 수 있어요. Bake는 Docker Compose 파일을 읽어 각 서비스를 빌드 타깃으로 변환할 수도 있어요. HCL이 가장 표현력 있고 유연한 형식이라, 이 문서의 대부분의 예시와 Bake를 쓰는 실제 프로젝트에서 HCL을 쓰는 경우가 많아요.
예를 들어 다음처럼 많은 CLI 플래그를 쓰는 구성이 있다면:
$ docker build \
-f Dockerfile \
-t myapp:latest \
--build-arg foo=bar \
--no-cache \
--platform linux/amd64,linux/arm64 \
.
Bake로는 이렇게 표현할 수 있어요:
target "myapp" {
context = "."
dockerfile = "Dockerfile"
tags = ["myapp:latest"]
args = {
foo = "bar"
}
no-cache = true
platforms = ["linux/amd64", "linux/arm64"]
}
VS Code에서 Bake 파일을 더 편하게 편집하고 싶다면, 린팅, 코드 탐색, 취약점 스캔을 지원하는 Docker DX 확장을 확인해 보세요.
다음 단계 (Next steps)
Bake 사용법을 더 알아보려면 다음 주제를 참고해요:
- Bake에서 타깃을 정의하고 사용하는 방법 익히기
- 타깃에 설정할 수 있는 모든 속성을 보려면 Bake 파일 참조(reference) 문서 확인하기