Docker Buildx Bake Compose 사용법 완벽 가이드! Docker Compose 프로젝트 빌드 관리하기

Docker 프로젝트에서는 하나의 컨테이너만 운영하는 경우보다 여러 개의 서비스를 함께 구성하는 경우가 많습니다.

예:

  • Backend API 서버
  • Frontend 웹 서버
  • Database
  • Redis Cache
  • Nginx Reverse Proxy
  • Worker 서버

이러한 여러 서비스를 관리하기 위해 많이 사용하는 도구가 Docker Compose입니다.

기존 Docker Compose에서는 다음과 같이 빌드합니다.

docker compose build

하지만 대규모 프로젝트에서는:

  • 여러 이미지 빌드 관리
  • 멀티 플랫폼 빌드
  • Cache 적용
  • Registry Push
  • CI/CD 자동화

같은 작업이 필요합니다.

Docker Buildx Bake는 Docker Compose 파일을 기반으로 빌드 설정을 가져와 자동화할 수 있습니다.

예:

docker buildx bake

Docker Compose 설정을 활용하여 여러 서비스를 동시에 빌드할 수 있습니다.

이번 글에서는 Docker Buildx Bake Compose 기능의 개념부터 Compose 파일 연동, 서비스별 이미지 빌드, CI/CD 활용 방법까지 자세히 알아보겠습니다.

Docker Buildx Bake Compose란 무엇인가?

Docker Buildx Bake Compose는 기존 Docker Compose 파일을 Buildx Bake 설정으로 변환하여 사용하는 기능입니다.

기존:

docker-compose.yml

Docker Compose Build

Buildx Bake:

docker-compose.yml

Docker Buildx Bake

자동 빌드

구조:

docker-compose.yml

↓

서비스 정보 분석

↓

Build Target 생성

↓

Docker Image 빌드

Docker Buildx Bake Compose가 필요한 이유

일반적인 Docker Compose 환경:

services:

  backend:
    build:
      context: ./backend


  frontend:
    build:
      context: ./frontend

빌드:

docker compose build

문제:

  • Buildx 고급 기능 사용 어려움
  • Multi-platform 빌드 제한
  • Cache 관리 복잡
  • Registry Push 자동화 어려움

Buildx Bake 활용:

docker buildx bake

장점:

  • Compose 설정 재사용
  • Buildx 기능 활용
  • Cache 적용 가능
  • 멀티 플랫폼 빌드 가능

Docker Buildx Bake Compose 기본 사용법

Docker Compose 파일:

docker-compose.yml

services:

  app:

    build:

      context: .

    image:

      company/app:v1

실행:

docker buildx bake -f docker-compose.yml

Docker Compose 설정을 Build Target으로 변환합니다.

Docker Buildx Bake Compose Target 확인하기

Compose 파일:

services:

  backend:

    build:

      context: ./backend


  frontend:

    build:

      context: ./frontend

확인:

docker buildx bake -f docker-compose.yml --print

결과:

backend Target 생성

frontend Target 생성

실제 빌드 전에 설정을 확인할 수 있습니다.

Docker Buildx Bake Compose 여러 서비스 빌드하기

docker-compose.yml:

services:

  backend:

    build:

      context: ./backend

    image:

      company/backend:v1


  frontend:

    build:

      context: ./frontend

    image:

      company/frontend:v1

실행:

docker buildx bake -f docker-compose.yml

결과:

Backend Image 생성

↓

Frontend Image 생성

여러 서비스를 한 번에 빌드할 수 있습니다.

Docker Buildx Bake Compose와 Multi-platform 빌드

Compose 파일:

services:

  app:

    build:

      context: .

Buildx Bake 실행:

docker buildx bake \
-f docker-compose.yml \
--set *.platform=linux/amd64,linux/arm64

결과:

linux/amd64 이미지

+

linux/arm64 이미지

멀티 아키텍처 이미지를 생성할 수 있습니다.

Docker Buildx Bake Compose와 Cache 사용

Compose 기반 프로젝트에서도 Cache를 적용할 수 있습니다.

예:

docker buildx bake \
-f docker-compose.yml \
--set *.cache-from=type=registry,ref=company/cache \
--set *.cache-to=type=registry,ref=company/cache

효과:

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

Docker Buildx Bake Compose와 Registry Push

운영 환경에서는 빌드 후 Registry Push가 필요합니다.

예:

docker buildx bake \
-f docker-compose.yml \
--push

동작:

Compose 서비스 확인

↓

이미지 빌드

↓

Registry Push

Kubernetes 배포 환경에서도 활용할 수 있습니다.

Docker Buildx Bake Compose 실무 활용 예제

프로젝트 구조:

project/

├── backend/

│   └── Dockerfile

├── frontend/

│   └── Dockerfile

└── docker-compose.yml

docker-compose.yml:

services:

  backend:

    build:

      context: ./backend

    image:

      company/backend:v1


  frontend:

    build:

      context: ./frontend

    image:

      company/frontend:v1

빌드:

docker buildx bake \
-f docker-compose.yml

결과:

backend 이미지 생성

frontend 이미지 생성

Docker Buildx Bake Compose와 CI/CD 활용

GitHub Actions 예:

- name: Build Images

  run: |

    docker buildx bake \
    -f docker-compose.yml \
    --push

활용:

  • 여러 서비스 자동 빌드
  • 이미지 자동 Push
  • 배포 자동화
  • 동일한 Build 환경 유지

Docker Buildx Bake Compose와 Override 활용

환경별 Compose 설정도 관리할 수 있습니다.

예:

개발:

docker-compose.dev.yml

운영:

docker-compose.prod.yml

개발 빌드:

docker buildx bake \
-f docker-compose.yml \
-f docker-compose.dev.yml

운영 빌드:

docker buildx bake \
-f docker-compose.yml \
-f docker-compose.prod.yml

환경별 설정을 분리할 수 있습니다.

Linux 서버 문제 해결

여러 서비스를 Docker Compose로 운영하고 있었습니다.

기존:

docker compose build

문제:

  • 멀티 플랫폼 지원 어려움
  • Cache 관리 부족
  • Registry Push 자동화 부족

Buildx Bake 적용:

docker buildx bake \
-f docker-compose.yml \
--push

결과:

  • 여러 서비스 자동 빌드
  • 이미지 Push 자동화
  • Buildx 기능 활용 가능

더 효율적인 Docker 운영 환경을 구성할 수 있었습니다.

Docker Buildx Bake Compose 사용 시 주의사항

첫 번째는 Compose 파일의 Build 설정이 정확해야 합니다.

두 번째는 서비스별 Image Tag 관리가 필요합니다.

세 번째는 Multi-platform 빌드 시 Registry 사용이 권장됩니다.

네 번째는 기존 Compose 실행과 Buildx Bake 빌드는 목적이 다르다는 점을 이해해야 합니다.

Best Practice

Docker Buildx Bake Compose 활용 방법:

  • 기존 Compose 설정 재사용
  • 서비스별 Image Tag 관리
  • Cache 적용
  • Registry Push 자동화
  • CI/CD 연결
  • Multi-platform 빌드 활용

자주 묻는 질문

Docker Buildx Bake Compose는 무엇인가요?

Docker Compose 파일을 기반으로 Buildx Bake 빌드를 실행하는 기능입니다.

기존 docker compose와 차이는 무엇인가요?

Docker Compose는 컨테이너 실행 관리 중심이고, Buildx Bake Compose는 이미지 빌드 자동화 중심입니다.

여러 서비스를 동시에 빌드할 수 있나요?

가능합니다.

Compose 파일에 정의된 여러 서비스를 Target으로 변환하여 빌드합니다.

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

가능합니다.

여러 서비스 이미지 빌드와 Registry Push 자동화에 활용됩니다.

마무리

Docker Buildx Bake Compose는 기존 Docker Compose 프로젝트를 더욱 강력한 이미지 빌드 환경으로 확장하는 기능입니다.

기존 Compose 설정을 그대로 활용하면서 Buildx의 멀티 플랫폼 빌드, Cache, Registry Push, CI/CD 자동화 기능을 사용할 수 있습니다.

특히 Backend, Frontend, Database 등 여러 서비스를 함께 운영하는 프로젝트에서는 Buildx Bake Compose를 활용하면 복잡한 빌드 과정을 단순화하고 안정적인 Docker 이미지 관리 환경을 구축할 수 있습니다.

댓글 남기기