Docker Buildx Bake Groups 사용법 완벽 가이드! 여러 Target 그룹 관리하기

Docker 프로젝트가 커지면 하나의 Build 설정 파일 안에 여러 Target이 생성됩니다.

예:

  • 개발용 Target
  • 테스트용 Target
  • 운영용 Target
  • 배포용 Target
  • 테스트 Image Target
  • Production Image Target

Target이 많아지면 원하는 Target만 묶어서 관리하는 기능이 필요합니다.

Docker Buildx Bake에서는 Groups(그룹) 기능을 사용하여 여러 Target을 하나의 묶음으로 관리할 수 있습니다.

예:

docker-bake.hcl

group "default" {

  targets = [

    "dev",

    "test",

    "production"

  ]

}

실행:

docker buildx bake

결과:

dev Target Build

↓

test Target Build

↓

production Target Build

여러 Build 대상을 한 번에 실행할 수 있습니다.

이번 글에서는 Docker Buildx Bake Groups의 개념부터 Target 그룹 관리, 기본 그룹 설정, CI/CD 활용, 대규모 프로젝트 구성 방법까지 자세히 알아보겠습니다.

Docker Buildx Bake Groups란 무엇인가?

Docker Buildx Bake Groups는 여러 Target을 하나의 그룹으로 묶어 관리하는 기능입니다.

기본 구조:

docker-bake.hcl

├── Target

│

├── dev

├── test

└── production


↓

Group

↓

여러 Target 실행

즉, 여러 Build 작업을 하나의 명령으로 실행할 수 있습니다.

Docker Buildx Bake Groups가 필요한 이유

Target이 적은 프로젝트에서는 문제가 없습니다.

하지만 프로젝트가 커지면:

docker-bake.hcl

├── frontend

├── backend

├── worker

├── api

├── test

└── production

처럼 많은 Target이 생성됩니다.

문제:

  • 하나씩 실행해야 함
  • Build 명령 증가
  • CI/CD 설정 복잡

Groups 사용:

Production Group

↓

backend Build

↓

frontend Build

↓

worker Build

한 번에 관리할 수 있습니다.

Docker Buildx Bake Groups 기본 설정

docker-bake.hcl:

target "frontend" {

  context = "./frontend"

}


target "backend" {

  context = "./backend"

}


group "application" {

  targets = [

    "frontend",

    "backend"

  ]

}

실행:

docker buildx bake application

결과:

frontend Image Build

↓

backend Image Build

Docker Buildx Bake 기본 Group(default) 사용법

Docker Buildx Bake에는 기본 Group이 존재합니다.

예:

group "default" {

  targets = [

    "app"

  ]

}

Target 이름 없이 실행:

docker buildx bake

하면 default Group이 실행됩니다.

구조:

docker buildx bake

↓

default Group

↓

Target 실행

Docker Buildx Bake 여러 Group 만들기

여러 환경별 Group을 만들 수 있습니다.

개발 Group:

group "development" {

  targets = [

    "frontend-dev",

    "backend-dev"

  ]

}

운영 Group:

group "production" {

  targets = [

    "frontend-prod",

    "backend-prod"

  ]

}

실행:

개발:

docker buildx bake development

운영:

docker buildx bake production

환경별 Build를 쉽게 관리할 수 있습니다.

Docker Buildx Bake Groups와 Target 관계

Group은 Target을 실행하기 위한 묶음입니다.

구조:

Group

↓

Target 목록

↓

각 Target Build 실행

예:

group "release" {

  targets = [

    "api",

    "worker",

    "web"

  ]

}

실행 순서:

release

↓

api Build

↓

worker Build

↓

web Build

Docker Buildx Bake Groups CI/CD 활용

CI/CD에서는 Group 기능이 매우 유용합니다.

예:

Release Group:

group "release" {

  targets = [

    "backend",

    "frontend",

    "worker"

  ]

}

GitHub Actions:

- name: Release Build

  run: |

    docker buildx bake release --push

흐름:

Code Merge

↓

Release Group 실행

↓

여러 Image Build

↓

Registry Push

Docker Buildx Bake Groups Multi Image 프로젝트 활용

대규모 서비스 예:

project

├── frontend

├── backend

├── database

└── worker

docker-bake.hcl:

group "all" {

  targets = [

    "frontend",

    "backend",

    "worker"

  ]

}

실행:

docker buildx bake all

전체 서비스를 한 번에 Build할 수 있습니다.

Docker Buildx Bake Groups와 Platform 설정

Group 내부 Target마다 다른 Platform을 사용할 수 있습니다.

예:

target "backend" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

}


target "frontend" {

  platforms = [

    "linux/amd64"

  ]

}


group "release" {

  targets = [

    "backend",

    "frontend"

  ]

}

각 Target 설정을 유지하면서 함께 실행 가능합니다.

Docker Buildx Bake Groups 실무 예제

프로젝트:

project/

├── Dockerfile

├── docker-bake.hcl

├── frontend/

├── backend/

└── worker/

docker-bake.hcl:

target "frontend" {

  tags = [

    "company/frontend:v1"

  ]

}


target "backend" {

  tags = [

    "company/backend:v1"

  ]

}


target "worker" {

  tags = [

    "company/worker:v1"

  ]

}


group "production" {

  targets = [

    "frontend",

    "backend",

    "worker"

  ]

}

실행:

docker buildx bake production --push

결과:

frontend:v1 Push

↓

backend:v1 Push

↓

worker:v1 Push

Docker Buildx Bake Groups 확인 방법

Group 목록 확인:

docker buildx bake --list

설정 확인:

docker buildx bake --print

출력:

Groups:

default

production

development

Docker Buildx Bake Groups 문제 해결

Group 이름 오류

오류:

unknown group

확인:

docker buildx bake --list

Group 이름을 확인합니다.


Target 실행 실패

확인:

targets = [

 "app"

]

Target 이름이 존재하는지 확인합니다.


Build 시간이 오래 걸리는 경우

해결:

필요한 Group만 실행합니다.

예:

docker buildx bake production

Docker Buildx Bake Groups 사용 시 주의사항

첫 번째는 Group 이름 규칙을 정하는 것이 좋습니다.

두 번째는 너무 많은 Target을 하나의 Group에 넣지 않는 것이 좋습니다.

세 번째는 개발·운영 Group을 분리하는 것이 좋습니다.

네 번째는 CI/CD Pipeline 구조와 Group 구성을 맞추는 것이 좋습니다.

Best Practice

Docker Buildx Bake Groups 활용 방법:

  • 환경별 Group 생성
  • Release Group 구성
  • 서비스별 Target 관리
  • CI/CD 연결
  • Multi Image Build 자동화
  • 프로젝트 구조와 일치

자주 묻는 질문

Docker Buildx Bake Groups는 무엇인가요?

여러 Target을 하나로 묶어 실행하는 기능입니다.

Target과 Group 차이는 무엇인가요?

Target은 개별 Build 설정이고 Group은 여러 Target을 묶은 실행 단위입니다.

여러 Docker Image를 동시에 Build할 수 있나요?

가능합니다.

Group에 여러 Target을 추가하면 됩니다.

CI/CD에서도 사용할 수 있나요?

가능합니다.

Release 배포나 여러 서비스 Image Build에 활용할 수 있습니다.

마무리

Docker Buildx Bake Groups는 여러 Docker Image와 Build Target을 체계적으로 관리하기 위한 중요한 기능입니다.

서비스가 커질수록 Target 개수가 증가하기 때문에 Group을 활용하면 복잡한 Build 과정을 단순화할 수 있습니다.

특히 Multi Service 프로젝트, CI/CD Pipeline, Kubernetes 환경에서는 Group 기반 Build 구조를 사용하면 효율적이고 안정적인 Docker Image 관리 환경을 구축할 수 있습니다.

댓글 남기기