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 이미지 관리 환경을 구축할 수 있습니다.