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) 문서 확인하기

더 알아보기 (Learn more)