Docker Buildx Bake Override 사용법 완벽 가이드! 기존 Build 설정 변경하기

Docker Buildx Bake를 사용하다 보면 기본 설정은 유지하면서 특정 환경에서만 일부 값을 변경해야 하는 경우가 있습니다.

예:

  • 개발 환경에서만 Tag 변경
  • 운영 환경에서만 Platform 추가
  • 테스트 환경에서만 Build Args 변경
  • CI/CD 환경에서만 Cache 적용
  • 특정 Build 옵션만 임시 변경

기본 설정:

target "app" {

  tags = [

    "company/app:latest"

  ]

  platforms = [

    "linux/amd64"

  ]

}

하지만 운영 환경에서는:

linux/amd64

+

linux/arm64

두 플랫폼을 사용하고 싶을 수 있습니다.

이럴 때 기존 설정 파일을 직접 수정하는 대신 Override 기능을 사용할 수 있습니다.

예:

docker-bake.override.hcl

target "app" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

}

실행:

docker buildx bake app

결과:

기본 설정 로드

↓

Override 설정 적용

↓

최종 Build 실행

이번 글에서는 Docker Buildx Bake Override의 개념부터 Override 파일 사용 방법, 설정 변경, CI/CD 활용, 운영 환경 관리 방법까지 자세히 알아보겠습니다.

Docker Buildx Bake Override란 무엇인가?

Docker Buildx Bake Override는 기존 Bake 설정을 유지하면서 일부 설정만 변경하는 기능입니다.

기본 구조:

docker-bake.hcl

↓

기본 설정


docker-bake.override.hcl

↓

변경 설정


↓

최종 Build 설정

즉, 전체 설정을 복사하지 않고 필요한 부분만 수정할 수 있습니다.

Docker Buildx Bake Override가 필요한 이유

Override 없이 관리하면:

docker-bake.hcl

↓

개발 설정

↓

운영 설정

↓

테스트 설정

여러 파일이 중복됩니다.

문제:

  • 설정 중복 증가
  • 수정 어려움
  • 환경 관리 복잡

Override 사용:

공통 설정

+

환경별 변경 사항

장점:

  • 중복 감소
  • 환경 관리 편리
  • 유지보수 향상
  • CI/CD 적용 쉬움

Docker Buildx Bake Override 기본 구조

기본 파일:

docker-bake.hcl

target "production" {

  tags = [

    "company/app:v1"

  ]

  platforms = [

    "linux/amd64"

  ]

}

Override 파일:

docker-bake.override.hcl

target "production" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

}

최종 결과:

Tag

↓

company/app:v1


Platform

↓

amd64

+

arm64

기존 설정에 변경 사항만 적용됩니다.

Docker Buildx Bake Override 파일 사용법

기본 실행:

docker buildx bake

Docker Buildx Bake는 자동으로 Override 파일을 읽습니다.

사용되는 파일:

docker-bake.hcl

+

docker-bake.override.hcl

명시적으로 지정:

docker buildx bake \
-f docker-bake.hcl \
-f docker-bake.override.hcl

여러 설정 파일을 조합할 수 있습니다.

Docker Buildx Bake Override Target 변경

기존 Target:

target "app" {

  args = {

    ENV = "production"

  }

}

Override:

target "app" {

  args = {

    ENV = "development"

  }

}

결과:

ENV

↓

development 적용

환경별 Build 설정을 쉽게 변경할 수 있습니다.

Docker Buildx Bake Override Tags 변경

기본:

target "app" {

  tags = [

    "company/app:latest"

  ]

}

Override:

target "app" {

  tags = [

    "company/app:dev"

  ]

}

결과:

company/app:dev

개발 환경 전용 Image를 만들 수 있습니다.

Docker Buildx Bake Override Platforms 변경

기본:

platforms = [

  "linux/amd64"

]

Override:

platforms = [

  "linux/amd64",

  "linux/arm64"

]

활용:

  • 개발 환경
  • ARM 테스트
  • Production 배포

Docker Buildx Bake Override Cache 설정 변경

개발 환경:

target "app" {

  cache-from = [

    "type=local,src=./cache"

  ]

}

CI 환경:

target "app" {

  cache-from = [

    "type=gha"

  ]

}

같은 Build 설정에서 환경별 Cache 전략을 사용할 수 있습니다.

Docker Buildx Bake Override CI/CD 활용

CI/CD 환경에서는 별도의 Override 파일을 사용하는 경우가 많습니다.

구조:

project/

├── docker-bake.hcl

├── docker-bake.dev.hcl

└── docker-bake.prod.hcl

개발:

docker buildx bake \
-f docker-bake.hcl \
-f docker-bake.dev.hcl

운영:

docker buildx bake \
-f docker-bake.hcl \
-f docker-bake.prod.hcl

환경별 설정을 분리할 수 있습니다.

Docker Buildx Bake Override와 Git 관리

팀 프로젝트에서는 공통 설정과 개인 설정을 분리할 수 있습니다.

예:

공통:

docker-bake.hcl

개인 환경:

docker-bake.override.hcl

장점:

  • 개인 설정 공유 방지
  • 개발 환경 유지
  • Git 충돌 감소

Docker Buildx Bake Override 실무 예제

프로젝트:

project/

├── Dockerfile

├── docker-bake.hcl

├── docker-bake.override.hcl

└── deploy.yaml

docker-bake.hcl:

target "production" {

  tags = [

    "registry.company.com/app:v1"

  ]

  args = {

    ENV = "production"

  }

}

docker-bake.override.hcl:

target "production" {

  tags = [

    "registry.company.com/app:test"

  ]

  args = {

    ENV = "test"

  }

}

실행:

docker buildx bake production

결과:

기본 설정

↓

Override 적용

↓

Test Image Build

Docker Buildx Bake Override 확인 방법

최종 설정 확인:

docker buildx bake --print

출력:

최종 Target 설정

↓

적용된 Tag

↓

적용된 Args

↓

Platform 확인

Override가 제대로 적용됐는지 확인할 수 있습니다.

Docker Buildx Bake Override 문제 해결

Override가 적용되지 않는 경우

확인:

ls

파일 이름 확인:

docker-bake.override.hcl

정확한 이름인지 확인합니다.

설정이 예상과 다른 경우

확인:

docker buildx bake --print target-name

최종 설정을 확인합니다.

여러 Override 충돌 발생

해결:

-f 파일순서

나중에 지정한 파일이 우선 적용됩니다.

Docker Buildx Bake Override 사용 시 주의사항

첫 번째는 Override 파일 이름 규칙을 지키는 것이 좋습니다.

두 번째는 중요한 Production 설정을 실수로 덮어쓰지 않도록 관리해야 합니다.

세 번째는 최종 설정을 --print로 확인하는 습관이 필요합니다.

네 번째는 환경별 Override 파일 구조를 명확하게 관리해야 합니다.

Best Practice

Docker Buildx Bake Override 활용 방법:

  • 공통 설정 유지
  • 환경별 변경 분리
  • CI/CD 전용 Override 사용
  • Production 설정 보호
  • 최종 설정 검증
  • 중복 설정 제거

자주 묻는 질문

Docker Buildx Bake Override는 무엇인가요?

기존 Bake 설정을 유지하면서 일부 값만 변경하는 기능입니다.

Override 파일은 자동 적용되나요?

docker-bake.override.hcl 파일은 기본 Bake 파일과 함께 사용할 수 있습니다.

Production과 Development 설정을 분리할 수 있나요?

가능합니다.

환경별 Override 파일을 만들어 관리할 수 있습니다.

기존 설정을 모두 다시 작성해야 하나요?

아닙니다.

변경할 부분만 작성하면 됩니다.

마무리

Docker Buildx Bake Override는 하나의 Build 설정을 여러 환경에서 효율적으로 관리하기 위한 중요한 기능입니다.

공통 설정은 유지하고 환경별 차이점만 Override 파일로 관리하면 Docker Bake 파일을 더욱 깔끔하게 유지할 수 있습니다.

특히 CI/CD, 개발·운영 환경 분리, Multi-platform Build 환경에서는 Override 방식을 활용하면 안정적이고 효율적인 Docker Build 구조를 만들 수 있습니다.

댓글 남기기