Docker Buildx Bake 사용법 완벽 가이드! 멀티 이미지 빌드 자동화

Docker 프로젝트가 커지면 하나의 Docker 이미지만 관리하는 것이 아니라 여러 개의 이미지를 함께 빌드하고 관리해야 하는 경우가 많습니다.

예:

  • Backend 이미지
  • Frontend 이미지
  • Nginx 이미지
  • Database 이미지
  • 테스트 이미지
  • 개발 환경 이미지

기존 방식에서는 각각 Docker Build 명령어를 따로 실행해야 합니다.

예:

docker buildx build -t backend:v1 ./backend

docker buildx build -t frontend:v1 ./frontend

docker buildx build -t nginx:v1 ./nginx

프로젝트 규모가 커질수록 반복되는 빌드 명령어와 옵션 관리가 어려워집니다.

이러한 문제를 해결하기 위해 Docker Buildx는 Bake 기능을 제공합니다.

Docker Buildx Bake는 여러 Docker 이미지의 빌드 설정을 하나의 파일에서 관리하고 자동으로 빌드할 수 있는 기능입니다.

예:

docker buildx bake

설정 파일에 정의된 여러 이미지를 한 번에 빌드할 수 있습니다.

이번 글에서는 Docker Buildx Bake의 개념부터 기본 사용법, 여러 이미지 관리, CI/CD 자동화 활용 방법까지 자세히 알아보겠습니다.

Docker Buildx Bake란 무엇인가?

Docker Buildx Bake는 여러 Docker Build 설정을 파일 형태로 관리하는 빌드 자동화 기능입니다.

기존 방식:

docker buildx build

하나의 이미지 빌드

Docker Buildx Bake:

docker buildx bake

여러 이미지와 빌드 설정 관리

구조:

Bake 설정 파일

Build Target

Docker Image 생성

복잡한 프로젝트의 빌드 과정을 하나의 설정 파일로 관리할 수 있습니다.

Docker Buildx Bake를 사용하는 이유

일반적인 프로젝트 구조:

project/

├── backend/

├── frontend/

└── nginx/

각 이미지마다 별도의 빌드 명령어가 필요합니다.

문제점:

  • 반복적인 명령어 작성
  • 동일 옵션 재입력 필요
  • CI/CD 설정 복잡
  • 빌드 환경 관리 어려움

Docker Buildx Bake 사용:

Bake 설정 파일

여러 이미지 자동 빌드

장점:

  • 빌드 설정 중앙 관리
  • 여러 이미지 동시 빌드
  • CI/CD 자동화 편리
  • 공통 옵션 재사용 가능

Docker Buildx Bake 기본 사용법

기본 명령어:

docker buildx bake

Docker는 현재 폴더에서 Bake 설정 파일을 찾습니다.

지원 파일:

docker-bake.hcl

docker-bake.json

docker-bake.override.hcl

가장 많이 사용하는 파일은:

docker-bake.hcl

입니다.

Docker Buildx Bake 파일 작성하기

docker-bake.hcl

예제:

group “default” {
targets = [
“app”
]
}

target “app” {
context = “.”
dockerfile = “Dockerfile”

tags = [
“my-app:v1”
]
}

실행:

docker buildx bake

결과:

my-app:v1

이미지가 생성됩니다.

Docker Buildx Bake Target이란?

Target은 빌드할 대상을 의미합니다.

예:

target “backend” {
context = “./backend”
}

target “frontend” {
context = “./frontend”
}

Target:

backend

frontend

각각 독립적인 Docker 이미지를 생성할 수 있습니다.

여러 Docker 이미지 동시에 빌드하기

docker-bake.hcl

예제:

group “default” {
targets = [
“backend”,
“frontend”
]
}

target “backend” {
context = “./backend”

tags = [
“company/backend:v1”
]
}

target “frontend” {
context = “./frontend”

tags = [
“company/frontend:v1”
]
}

실행:

docker buildx bake

결과:

backend 이미지 생성

frontend 이미지 생성

여러 이미지를 한 번에 빌드할 수 있습니다.

Docker Buildx Bake와 Docker Buildx Build 차이

Docker Buildx Build

명령어:

docker buildx build -t app:v1 .

특징:

  • 단일 이미지 빌드
  • 명령어 직접 작성
  • 간단한 프로젝트에 적합

Docker Buildx Bake

명령어:

docker buildx bake

특징:

  • 여러 이미지 관리
  • 설정 파일 기반
  • 대규모 프로젝트 적합

정리:

Buildx Build

= 하나의 이미지 생성

Buildx Bake

= 여러 빌드 작업 관리

Docker Buildx Bake 실무 활용 예제

Backend + Frontend 프로젝트

프로젝트 구조:

project/

├── backend/

│ └── Dockerfile

├── frontend/

│ └── Dockerfile

└── docker-bake.hcl

docker-bake.hcl:

target “backend” {
context = “./backend”

tags = [
“app/backend:v1”
]
}

target “frontend” {
context = “./frontend”

tags = [
“app/frontend:v1”
]
}

실행:

docker buildx bake

결과:

Backend 이미지 생성

Frontend 이미지 생성

CI/CD에서 Docker Buildx Bake 활용

GitHub Actions 예:

docker buildx bake –push

활용 효과:

  • 여러 이미지 자동 빌드
  • 설정 파일 기반 관리
  • 배포 과정 단순화

Docker Buildx Bake 옵션 활용

특정 Target만 빌드하기

명령어:

docker buildx bake backend

결과:

backend 이미지만 생성됩니다.

여러 Target 지정하기

docker buildx bake backend frontend

두 개의 이미지를 동시에 빌드합니다.

빌드 설정 확인하기

docker buildx bake –print

실제 실행될 Build 설정을 미리 확인할 수 있습니다.

Linux 서버 문제 해결

여러 Docker 이미지를 배포해야 하는 프로젝트가 있었습니다.

기존 방식:

docker buildx build -t backend:v1 ./backend

docker buildx build -t frontend:v1 ./frontend

문제:

  • 명령어 반복
  • 관리 어려움
  • CI/CD 설정 복잡

Docker Buildx Bake 적용:

docker-bake.hcl

target “backend” {
context=”./backend”
}

target “frontend” {
context=”./frontend”
}

실행:

docker buildx bake

결과:

backend 빌드 완료

frontend 빌드 완료

하나의 명령으로 여러 이미지를 관리할 수 있게 되었습니다.

Docker Buildx Bake 사용 시 주의사항

첫 번째는 Bake 파일 관리 규칙을 정해야 합니다.

두 번째는 Target 이름을 명확하게 작성해야 합니다.

세 번째는 이미지 Tag 관리 전략이 필요합니다.

네 번째는 CI/CD 환경에서는 Bake 파일 버전 관리가 중요합니다.

Best Practice

Docker Buildx Bake 활용 방법:

  • 여러 이미지 프로젝트에 사용
  • docker-bake.hcl 중앙 관리
  • Target 이름 규칙 설정
  • CI/CD 자동화 연결
  • 공통 Build 옵션 재사용
  • Registry Push 자동화

자주 묻는 질문

Docker Buildx Bake는 무엇인가요?

여러 Docker 이미지를 설정 파일 기반으로 자동 빌드하는 기능입니다.

Buildx Build와 Bake 차이는 무엇인가요?

Buildx Build는 하나의 이미지를 생성하고, Bake는 여러 빌드 작업을 관리합니다.

어떤 파일을 사용하나요?

일반적으로 docker-bake.hcl 파일을 사용합니다.

작은 프로젝트에서도 사용할 수 있나요?

가능합니다.

하지만 여러 이미지와 복잡한 빌드 환경에서 더욱 큰 효과를 얻을 수 있습니다.

마무리

Docker Buildx Bake는 여러 Docker 이미지를 효율적으로 관리하기 위한 강력한 자동화 기능입니다.

하나의 설정 파일과 명령어만으로 Backend, Frontend, Nginx 등 다양한 이미지를 관리할 수 있으며, CI/CD 환경에서도 빌드 과정을 단순화할 수 있습니다.

특히 마이크로서비스 구조나 여러 컨테이너를 운영하는 환경에서는 Docker Buildx Bake를 활용하면 반복적인 빌드 작업을 줄이고 더욱 안정적인 Docker 이미지 관리 환경을 구축할 수 있습니다.

댓글 남기기