Docker Buildx Bake YAML 사용법 완벽 가이드! YAML 형식으로 Bake 설정 작성하기

Docker Buildx Bake는 일반적으로 HCL 형식을 많이 사용하지만, YAML 형식으로도 빌드 설정을 작성할 수 있습니다.

YAML은 사람이 읽기 쉬운 구조를 가지고 있어 설정 파일 관리에 익숙한 개발자나 CI/CD 환경에서 활용하기 좋습니다.

예:

docker-bake.yaml

target:

  app:

    context: .

    dockerfile: Dockerfile

    tags:

      - company/app:v1

실행:

docker buildx bake -f docker-bake.yaml

YAML 파일에 정의된 설정을 기반으로 Docker 이미지를 빌드할 수 있습니다.

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

Docker Buildx Bake YAML이란 무엇인가?

Docker Buildx Bake YAML은 Docker 이미지 빌드 설정을 YAML 형식으로 작성하는 방법입니다.

기본 Bake 설정 파일:

docker-bake.hcl

docker-bake.json

docker-bake.yaml

YAML 구조:

YAML 설정 파일

Target 정의

Build 옵션 적용

Docker Image 생성

HCL과 동일한 Docker Buildx Bake 기능을 다른 문법으로 작성할 수 있습니다.

Docker Buildx Bake YAML을 사용하는 이유

Docker Buildx Bake에서 HCL 형식이 가장 많이 사용되지만 YAML 방식도 장점이 있습니다.

YAML 장점:

  • 구조가 간단함
  • 사람이 읽기 쉬움
  • CI/CD 설정과 유사함
  • 설정 파일 관리 편리

특히 다음 환경에서 유용합니다.

  • GitHub Actions
  • GitLab CI
  • Kubernetes 기반 환경
  • 자동 생성 설정

Docker Buildx Bake YAML 기본 구조

기본 구조:

target:

  이미지이름:

    빌드설정

예:

target:

  app:

    context: .

    dockerfile: Dockerfile

구성:

target

= 빌드 대상

app

= Target 이름

context

= Docker Build 위치

dockerfile

= 사용할 Dockerfile

Docker Buildx Bake YAML Target 작성 방법

docker-bake.yaml

target:

  app:

    context: .

    dockerfile: Dockerfile

    tags:

      - company/app:v1

실행:

docker buildx bake -f docker-bake.yaml app

결과:

company/app:v1

이미지가 생성됩니다.

Docker Buildx Bake YAML 여러 Target 관리하기

여러 서비스를 하나의 YAML 파일에서 관리할 수 있습니다.

예:

target:

  backend:

    context: ./backend

    tags:

      - company/backend:v1


  frontend:

    context: ./frontend

    tags:

      - company/frontend:v1

실행:

docker buildx bake -f docker-bake.yaml backend frontend

결과:

Backend 이미지 생성

Frontend 이미지 생성

여러 Docker 이미지를 하나의 파일에서 관리할 수 있습니다.

Docker Buildx Bake YAML Group 설정하기

Group은 여러 Target을 묶어서 한번에 실행하는 기능입니다.

예:

group:

  default:

    targets:

      - backend

      - frontend

실행:

docker buildx bake -f docker-bake.yaml

결과:

backend와 frontend가 함께 빌드됩니다.

Docker Buildx Bake YAML Platform 설정

YAML에서도 멀티 플랫폼 빌드를 설정할 수 있습니다.

예:

target:

  app:

    platforms:

      - linux/amd64

      - linux/arm64

결과:

linux/amd64 이미지

linux/arm64 이미지

Intel 서버와 ARM 서버 모두 지원할 수 있습니다.

Docker Buildx Bake YAML Cache 설정

빌드 속도를 높이기 위해 Cache 설정을 추가할 수 있습니다.

예:

target:

  app:

    cache-from:

      - type=registry,ref=company/cache


    cache-to:

      - type=registry,ref=company/cache

효과:

  • 기존 Layer 재사용
  • 빌드 시간 감소
  • CI/CD 속도 향상

Docker Buildx Bake YAML Output 설정

빌드 결과 저장 위치도 지정할 수 있습니다.

예:

target:

  app:

    output:

      - type=docker

또는:

target:

  app:

    output:

      - type=local,dest=./result

활용:

  • 이미지 저장
  • 파일 추출
  • Artifact 생성

Docker Buildx Bake YAML 변수 관리

YAML은 HCL처럼 Variable 블록을 직접 사용하는 방식은 아니지만 환경 변수와 함께 활용할 수 있습니다.

예:

target:

  app:

    tags:

      - company/app:v1

CI/CD 환경에서는 빌드 전에 YAML 파일을 생성하거나 값을 변경하는 방식으로 활용합니다.

Docker Buildx Bake YAML과 HCL 비교

HCL

특징:

  • Docker 공식 예제에서 많이 사용
  • 변수 지원
  • 상속 지원
  • 복잡한 설정에 적합

예:

target "app" {

  tags = [
    "company/app:v1"
  ]

}

YAML

특징:

  • 읽기 쉬움
  • 구조 단순
  • CI/CD 친화적
  • 자동화 환경 적합

예:

target:

  app:

    tags:

      - company/app:v1

정리:

HCL

= 복잡한 Docker Build 관리

YAML

= 간단하고 읽기 쉬운 설정 관리

Docker Buildx Bake YAML 실무 활용 예제

프로젝트 구조:

project/

├── backend/

├── frontend/

└── docker-bake.yaml

docker-bake.yaml:

group:

  default:

    targets:

      - backend

      - frontend


target:

  backend:

    context: ./backend

    tags:

      - company/backend:v1


  frontend:

    context: ./frontend

    tags:

      - company/frontend:v1

실행:

docker buildx bake -f docker-bake.yaml

결과:

Backend 이미지 생성

Frontend 이미지 생성

CI/CD에서 Docker Buildx Bake YAML 활용

GitHub Actions 예:

- name: Build Docker Images

  run: |

    docker buildx bake \
    -f docker-bake.yaml \
    --push

활용:

  • 자동 이미지 빌드
  • Registry Push
  • 배포 자동화
  • 동일한 Build 환경 유지

Docker Buildx Bake YAML과 Compose 활용

기존 Docker Compose 환경에서도 YAML 기반 설정을 활용할 수 있습니다.

예:

docker-compose.yml

Buildx Bake 변환

docker-bake.yaml 관리

여러 서비스 프로젝트에서 유용합니다.

Linux 서버 문제 해결

여러 Docker 서비스를 운영하면서 Build 설정을 관리해야 했습니다.

기존:

각 서비스마다 별도 명령 실행

docker buildx build backend

docker buildx build frontend

문제:

  • 반복 명령 증가
  • 옵션 관리 어려움
  • 자동화 복잡

YAML 적용:

docker-bake.yaml

target:

  backend:

    context: ./backend


  frontend:

    context: ./frontend

실행:

docker buildx bake -f docker-bake.yaml

결과:

하나의 YAML 파일로 여러 Docker 이미지를 관리할 수 있었습니다.

Docker Buildx Bake YAML 사용 시 주의사항

첫 번째는 YAML 들여쓰기 오류를 주의해야 합니다.

두 번째는 큰 프로젝트에서는 파일 구조를 체계적으로 관리해야 합니다.

세 번째는 복잡한 상속 구조에서는 HCL이 더 적합할 수 있습니다.

네 번째는 CI/CD 환경에서는 파일 버전 관리를 해야 합니다.

Best Practice

Docker Buildx Bake YAML 활용 방법:

  • 간단한 프로젝트에서 사용
  • CI/CD 설정과 함께 관리
  • 서비스별 Target 분리
  • Platform 명확하게 지정
  • Cache 설정 적용
  • Registry Push 자동화

자주 묻는 질문

Docker Buildx Bake YAML은 무엇인가요?

Docker Buildx Bake 설정을 YAML 형식으로 작성하는 방법입니다.

HCL과 YAML 중 어떤 것을 사용하는 것이 좋나요?

간단한 프로젝트는 YAML이 편리하고, 복잡한 프로젝트는 HCL이 적합합니다.

YAML에서도 여러 이미지를 관리할 수 있나요?

가능합니다.

Target을 여러 개 만들어 Backend, Frontend 등 여러 이미지를 관리할 수 있습니다.

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

가능합니다.

GitHub Actions 같은 자동화 환경과 잘 어울립니다.

마무리

Docker Buildx Bake YAML은 Docker 이미지 빌드 설정을 간단하고 읽기 쉬운 형태로 관리할 수 있는 방법입니다.

HCL보다 문법이 단순하고 구조가 명확하기 때문에 설정 파일을 쉽게 관리할 수 있으며, CI/CD 환경에서도 활용하기 좋습니다.

특히 여러 Docker 서비스를 운영하는 프로젝트에서는 YAML 기반 Bake 설정을 활용하면 빌드 과정을 자동화하고 효율적인 이미지 관리 환경을 구축할 수 있습니다.

댓글 남기기