Docker Buildx Bake Override 사용법 완벽 가이드! 환경별 빌드 설정 변경하기

Docker 프로젝트를 운영하다 보면 같은 이미지를 빌드하더라도 환경에 따라 다른 설정이 필요한 경우가 많습니다.

예:

  • 개발 환경에서는 테스트용 설정 사용
  • 스테이징 환경에서는 검증용 설정 사용
  • 운영 환경에서는 최적화된 설정 사용
  • CI/CD에서는 별도의 Cache 설정 적용

하지만 하나의 docker-bake.hcl 파일에 모든 환경 설정을 넣으면 관리가 복잡해질 수 있습니다.

예:

target "app" {

  tags = [
    "company/app:latest"
  ]

  platforms = [
    "linux/amd64"
  ]

}

운영 환경에서 Tag나 Platform을 변경하려면 기본 설정 파일을 수정해야 합니다.

이때 사용하는 기능이 바로 Docker Buildx Bake Override입니다.

Override를 사용하면 기본 Bake 설정은 유지하면서 특정 환경에서만 필요한 설정을 추가하거나 변경할 수 있습니다.

예:

기본 파일:

docker-bake.hcl

Override 파일:

docker-bake.override.hcl

실행:

docker buildx bake

자동으로 Override 설정이 적용됩니다.

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

Docker Buildx Bake Override란 무엇인가?

Docker Buildx Bake Override는 기존 Bake 설정을 덮어쓰거나 추가 변경하는 기능입니다.

기본 구조:

기본 Bake 파일

Override 파일 적용

최종 Build 설정 생성

예:

docker-bake.hcl

target "app" {

  tags = [
    "company/app:latest"
  ]

}

docker-bake.override.hcl

target "app" {

  tags = [
    "company/app:dev"
  ]

}

결과:

company/app:dev

기존 설정을 변경하여 사용할 수 있습니다.

Docker Buildx Bake Override가 필요한 이유

Override를 사용하지 않는 경우:

환경별 파일을 따로 관리해야 합니다.

예:

docker-bake-dev.hcl

docker-bake-stage.hcl

docker-bake-prod.hcl

문제:

  • 설정 중복
  • 수정 작업 증가
  • 공통 설정 관리 어려움

Override 사용:

기본 설정:

docker-bake.hcl

환경별 변경:

docker-bake.override.hcl

장점:

  • 공통 설정 유지
  • 환경별 변경 가능
  • 관리 파일 감소
  • CI/CD 적용 편리

Docker Buildx Bake Override 파일 구조

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

기본:

docker-bake.hcl

Override:

docker-bake.override.hcl

구조:

project/

├── docker-bake.hcl

└── docker-bake.override.hcl

실행:

docker buildx bake

기본 설정 후 Override 설정이 적용됩니다.

Docker Buildx Bake Override 기본 사용법

기본 파일:

docker-bake.hcl

target "app" {

  context = "."

  tags = [
    "company/app:latest"
  ]

}

Override 파일:

docker-bake.override.hcl

target "app" {

  tags = [
    "company/app:dev"
  ]

}

실행:

docker buildx bake

결과:

company/app:dev

Override 설정이 적용됩니다.

Docker Buildx Bake Override로 환경별 Tag 변경하기

개발 환경:

docker-bake.override.hcl

target "app" {

  tags = [
    "company/app:development"
  ]

}

운영 환경:

docker-bake.prod.hcl

target "app" {

  tags = [
    "company/app:production"
  ]

}

환경별로 다른 이미지를 생성할 수 있습니다.

Docker Buildx Bake Override와 -f 옵션 사용하기

특정 Override 파일을 사용할 수도 있습니다.

예:

docker-bake.production.hcl

실행:

docker buildx bake
-f docker-bake.hcl
-f docker-bake.production.hcl

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

Docker Buildx Bake Override 실무 활용 예제

개발 환경 설정 변경

기본 설정:

docker-bake.hcl

target "app" {

  platforms = [
    "linux/amd64",
    "linux/arm64"
  ]

  tags = [
    "company/app:latest"
  ]

}

개발 Override:

docker-bake.override.hcl

target "app" {

  tags = [
    "company/app:dev"
  ]

}

결과:

개발 환경에서는:

company/app:dev

운영 환경에서는:

company/app:latest

환경에 맞는 이미지를 관리할 수 있습니다.

Docker Buildx Bake Override와 CI/CD 활용

CI 환경에서는 별도의 설정을 적용할 수 있습니다.

예:

docker-bake.ci.hcl

target "app" {

  cache-from = [
    "type=gha"
  ]

  cache-to = [
    "type=gha"
  ]

}

실행:

docker buildx bake
-f docker-bake.hcl
-f docker-bake.ci.hcl

효과:

  • CI Cache 적용
  • 빌드 속도 향상
  • 환경별 설정 분리

Docker Buildx Bake Override와 Production 배포

운영 환경에서는 보안과 안정성을 위한 설정을 추가할 수 있습니다.

예:

docker-bake.production.hcl

target "app" {

  platforms = [
    "linux/amd64",
    "linux/arm64"
  ]

  push = true

}

운영 빌드:

docker buildx bake
-f docker-bake.hcl
-f docker-bake.production.hcl

운영 환경에 맞는 설정으로 빌드할 수 있습니다.

Linux 서버 문제 해결

하나의 Bake 파일로 개발과 운영 환경을 관리하고 있었습니다.

기존:

docker-bake.hcl

target "app" {

  tags = [
    "company/app:latest"
  ]

}

문제:

  • 개발 테스트 때마다 파일 수정 필요
  • 운영 설정과 충돌 발생
  • 잘못된 Tag 배포 가능

Override 적용:

docker-bake.override.hcl

target "app" {

  tags = [
    "company/app:dev"
  ]

}

실행:

docker buildx bake

결과:

개발 환경에서는 dev Tag 사용

운영 설정은 기본 파일 유지

환경별 설정을 안전하게 분리할 수 있었습니다.

Docker Buildx Bake Override 사용 시 주의사항

첫 번째는 Override 파일 적용 순서를 확인해야 합니다.

두 번째는 동일한 Target 이름을 사용할 경우 기존 설정이 변경될 수 있습니다.

세 번째는 운영 환경 Override 파일은 별도 관리하는 것이 좋습니다.

네 번째는 민감한 정보는 Bake 파일에 직접 저장하지 않는 것이 좋습니다.

Best Practice

Docker Buildx Bake Override 활용 방법:

  • 기본 설정과 환경 설정 분리
  • 개발·스테이징·운영 파일 관리
  • CI/CD 전용 Override 사용
  • 공통 설정은 기본 파일 유지
  • 환경별 Tag 관리
  • 배포 전 Build 설정 확인

자주 묻는 질문

Docker Buildx Bake Override는 무엇인가요?

기존 Bake 설정을 환경에 맞게 변경하거나 추가하는 기능입니다.

Override 파일 이름은 무엇인가요?

기본적으로:

docker-bake.override.hcl

파일을 자동으로 사용합니다.

여러 Override 파일을 사용할 수 있나요?

가능합니다.

-f 옵션으로 여러 Bake 파일을 조합할 수 있습니다.

개발과 운영 설정을 분리할 수 있나요?

가능합니다.

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

마무리

Docker Buildx Bake Override는 하나의 Docker 프로젝트에서 다양한 환경을 효율적으로 관리하기 위한 중요한 기능입니다.

기본 Bake 설정은 유지하면서 개발, 테스트, 운영, CI/CD 환경에 필요한 설정만 변경할 수 있어 관리성과 안정성을 높일 수 있습니다.

특히 여러 Docker 이미지를 운영하거나 자동 배포 환경을 구성하는 경우 Override 기능을 활용하면 반복적인 설정 변경을 줄이고 더욱 체계적인 Docker 빌드 시스템을 구축할 수 있습니다.

댓글 남기기