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 구조를 만들 수 있습니다.