Docker Buildx Bake Matrix 사용법 완벽 가이드! 여러 Build 조합 자동 생성하기

Docker 프로젝트가 커지면 하나의 Image만 Build하는 것이 아니라 다양한 조건으로 여러 개의 Build를 실행해야 하는 경우가 많습니다.

예:

  • 여러 운영체제 지원
  • 여러 CPU Architecture 지원
  • 여러 Runtime Version 테스트
  • 여러 환경별 Image 생성
  • 여러 설정 조합 테스트

일반적인 방식:

id="m8s3xq"
Node 18 Build 실행

↓

Node 20 Build 실행

↓

Node 22 Build 실행

문제:

  • 명령어 반복 증가
  • 관리 복잡
  • CI/CD 설정 증가

Docker Buildx Bake에서는 Matrix 기능을 활용하여 여러 Build 조합을 자동으로 생성하고 관리할 수 있습니다.

예:

docker-bake.hcl

variable "NODE_VERSION" {

  default = "20"

}


target "app" {

  args = {

    NODE_VERSION = "${NODE_VERSION}"

  }

}

여러 값을 조합하여 다양한 Build 환경을 만들 수 있습니다.

결과:

Node 18

↓

Build


Node 20

↓

Build


Node 22

↓

Build

이번 글에서는 Docker Buildx Bake Matrix의 개념부터 여러 Build 조합 생성, Platform Matrix, CI/CD 테스트 자동화, 실무 활용 방법까지 자세히 알아보겠습니다.

Docker Buildx Bake Matrix란 무엇인가?

Docker Buildx Bake Matrix는 여러 Build 설정 조합을 자동으로 생성하는 방식입니다.

기본 구조:

Matrix 설정

↓

여러 값 조합 생성

↓

각각 Build 실행

예:

Version

├── Node 18

├── Node 20

└── Node 22

하나의 설정으로 여러 Build 환경을 관리할 수 있습니다.

Docker Buildx Bake Matrix가 필요한 이유

Matrix 없이 관리하면:

target node18

target node20

target node22

처럼 Target이 계속 증가합니다.

문제:

  • 설정 파일 증가
  • 유지보수 어려움
  • CI/CD 복잡

Matrix 활용:

하나의 Target

↓

여러 조합 생성

↓

자동 Build

장점:

  • 반복 설정 감소
  • 테스트 자동화
  • 환경 확장 쉬움
  • CI 관리 편리

Docker Buildx Bake Matrix 기본 개념

Matrix는 여러 변수를 조합하는 방식입니다.

예:

Runtime

↓

Node 18

Node 20


Platform

↓

amd64

arm64

조합 결과:

Node 18 + amd64

Node 18 + arm64

Node 20 + amd64

Node 20 + arm64

총 4개의 Build 조합이 생성됩니다.

Docker Buildx Bake Matrix와 Variables 활용

변수를 사용하여 Build 조합을 관리할 수 있습니다.

예:

variable "VERSION" {

  default = "20"

}


target "app" {

  args = {

    NODE_VERSION = "${VERSION}"

  }

}

실행:

VERSION=18 docker buildx bake app

결과:

NODE_VERSION=18

변경:

VERSION=22 docker buildx bake app

결과:

NODE_VERSION=22

Docker Buildx Bake Matrix Platform 조합

Multi-platform 환경에서도 활용할 수 있습니다.

예:

Application

+

Platform

조합:

linux/amd64

+

linux/arm64

구성:

target "app" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

}

결과:

amd64 Image

+

arm64 Image

Docker Buildx Bake Matrix 테스트 환경 활용

여러 Runtime Version 테스트에 활용할 수 있습니다.

예:

Application

↓

Python 3.10

↓

Python 3.11

↓

Python 3.12

각 환경별 Image를 자동 생성할 수 있습니다.

예:

variable "PYTHON_VERSION" {

  default = "3.12"

}


target "test" {

  args = {

    PYTHON_VERSION = "${PYTHON_VERSION}"

  }

}

테스트 환경을 쉽게 변경할 수 있습니다.

Docker Buildx Bake Matrix CI/CD 활용

CI/CD 테스트 환경에서 Matrix 구조를 많이 사용합니다.

흐름:

Code Push

↓

CI 실행

↓

여러 환경 Build

↓

Test 실행

↓

결과 확인

예:

Node 18 Test

Node 20 Test

Node 22 Test

모든 환경을 자동 검증할 수 있습니다.

Docker Buildx Bake Matrix GitHub Actions 활용

GitHub Actions 자체 Matrix와 함께 사용할 수 있습니다.

예:

strategy:

  matrix:

    node:

      - 18

      - 20

      - 22

실행:

docker buildx bake test

결과:

Node 18 Build

Node 20 Build

Node 22 Build

여러 버전을 자동 테스트합니다.

Docker Buildx Bake Matrix Multi-platform 실무 예제

docker-bake.hcl:

target "production" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

  tags = [

    "company/app:v1"

  ]

}

Build:

docker buildx bake production --push

결과:

company/app:v1

├── amd64

└── arm64

하나의 Image Tag로 관리됩니다.

Docker Buildx Bake Matrix 실무 프로젝트 예제

프로젝트:

project/

├── Dockerfile

├── docker-bake.hcl

└── .github/

docker-bake.hcl:

variable "VERSION" {

  default = "20"

}


target "app" {

  tags = [

    "company/app:${VERSION}"

  ]

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

}

실행:

VERSION=22 docker buildx bake app --push

결과:

company/app:22

├── amd64

└── arm64

Docker Buildx Bake Matrix 확인 방법

최종 Build 설정 확인:

docker buildx bake --print app

출력:

적용된 변수

Platform

Tag

Build 설정

확인 가능합니다.

Docker Buildx Bake Matrix 문제 해결

Build 조합이 예상과 다른 경우

확인:

docker buildx bake --print

최종 설정을 확인합니다.

Platform Build 실패

확인:

docker buildx inspect

Builder 지원 여부를 확인합니다.

CI 시간이 너무 오래 걸리는 경우

해결:

  • Cache 적용
  • 필요한 Matrix만 실행
  • 병렬 Build 활용

Docker Buildx Bake Matrix 사용 시 주의사항

첫 번째는 너무 많은 조합을 만들면 Build 시간이 증가할 수 있습니다.

두 번째는 Cache 설정을 함께 사용하는 것이 좋습니다.

세 번째는 테스트 목적과 운영 목적의 Matrix를 구분해야 합니다.

네 번째는 불필요한 Platform 조합을 줄이는 것이 좋습니다.

Best Practice

Docker Buildx Bake Matrix 활용 방법:

  • Runtime Version 테스트
  • Multi-platform Build
  • CI 자동 테스트
  • Cache 적용
  • 필요한 조합만 생성
  • Version 관리 자동화

자주 묻는 질문

Docker Buildx Bake Matrix는 무엇인가요?

여러 Build 조건을 조합하여 자동으로 여러 Build를 생성하는 방식입니다.

어떤 환경에서 많이 사용하나요?

CI/CD 테스트, Multi-platform Build, 여러 Runtime 지원 프로젝트에서 많이 사용합니다.

여러 Docker Image를 만들 수 있나요?

가능합니다.

조건별 Tag를 지정하여 여러 Image를 생성할 수 있습니다.

Build 시간이 많이 늘어나나요?

조합 개수가 증가하면 늘어날 수 있습니다.

Cache와 병렬 Build를 함께 사용하는 것이 좋습니다.

마무리

Docker Buildx Bake Matrix는 다양한 환경의 Docker Image를 효율적으로 관리하기 위한 강력한 기능입니다.

여러 Runtime Version, CPU Architecture, 운영 환경을 하나의 설정으로 관리할 수 있으며 CI/CD 자동 테스트 환경에서도 매우 유용합니다.

특히 Multi-platform Image 운영과 대규모 프로젝트에서는 Matrix 구조를 활용하면 반복적인 Build 작업을 줄이고 안정적인 Docker Pipeline을 구축할 수 있습니다.

댓글 남기기