🧁 Docker Bake 완벽 가이드: 멀티 이미지 빌드의 새로운 기준
Dockerfile 하나로는 부족할 때, docker buildx bake가 해결해드립니다.
🍰 Docker Bake란?
Docker Bake는 여러 Docker 이미지를 동시에 정의하고 병렬로 빌드할 수 있도록 해주는 CLI 명령어입니다. 기본적으로 docker buildx의 기능 중 하나이며, docker buildx bake 명령어를 통해 사용합니다.
Docker Bake는 Makefile이나 docker-compose처럼 구성 파일에 정의된 작업들을 실행하는 빌드 자동화 도구이며, HCL(HashiCorp Configuration Language) 또는 JSON, docker-bake.hcl 파일을 통해 구성합니다.
✅ 언제 사용할까?
- 여러 Dockerfile을 한 번에 빌드하고 싶을 때
- 서로 다른 플랫폼(arm64, amd64 등)용 이미지를 동시에 빌드해야 할 때
- CI/CD 환경에서 빌드 흐름을 명확하게 구성하고 자동화할 때
- buildx의 병렬 빌드 기능을 제대로 활용하고 싶을 때
🧩 기본 사용법
docker buildx bake
기본적으로 같은 디렉터리의 docker-bake.hcl 또는 docker-bake.json 파일을 읽고 거기 정의된 빌드 타겟(target)을 순서대로 실행합니다.
특정 타겟만 빌드하기
docker buildx bake myservice
여러 타겟 동시 실행
docker buildx bake web db cache
📝 docker-bake.hcl 구성 예시
group "default" {
targets = ["web", "db"]
}
target "web" {
context = "./web"
dockerfile = "Dockerfile"
tags = ["myapp/web:latest"]
}
target "db" {
context = "./db"
dockerfile = "Dockerfile"
tags = ["myapp/db:latest"]
}
설명:
- group "default": 아무런 옵션 없이 bake 명령어를 실행했을 때 포함되는 타겟들입니다.
- target: 각각의 Docker 빌드 타겟 정의
- context, dockerfile, tags: docker build에서 사용하는 옵션과 동일
🔄 JSON 형식도 가능
{
"target": {
"web": {
"context": "./web",
"dockerfile": "Dockerfile",
"tags": ["myapp/web:latest"]
}
}
}
Tip: JSON은 CI/CD 파이프라인에서 자동 생성된 설정 파일로 쓰기 좋습니다.
🔃 플랫폼 병렬 빌드
Bake는 platforms 옵션을 통해 여러 아키텍처에 대한 이미지를 동시에 빌드할 수 있습니다.
target "api" {
context = "./api"
dockerfile = "Dockerfile"
platforms = ["linux/amd64", "linux/arm64"]
tags = ["myorg/api:latest"]
}
🧠 docker-compose도 변환 가능?
docker-compose.yml을 bake 형식으로 자동 변환할 수도 있습니다:
docker buildx bake --print
이 명령어는 현재 Compose 파일을 bake 형식으로 변환하여 출력합니다. 이를 참고해 docker-bake.hcl로 구성해도 좋습니다.
🧪 실제 사용 예시 (CI/CD 연동)
GitHub Actions나 GitLab CI에서 다음과 같은 식으로 Bake를 연동할 수 있습니다.
- name: Bake Docker images
run: docker buildx bake --push
🎯 장점 요약
기능 설명
병렬 빌드 | 여러 이미지를 동시에 빠르게 빌드 |
다양한 플랫폼 지원 | amd64, arm64 등 크로스 플랫폼 빌드 |
선언적 구성 | HCL 또는 JSON을 통한 명확한 빌드 정의 |
CI/CD 친화적 | 자동화 및 반복 가능한 빌드 시스템 구축 가능 |
복잡한 빌드 흐름 단순화 | 빌드 로직을 하나의 파일로 통합 |
❗ 주의사항
- docker buildx가 설치되어 있어야 하며, 기본 빌드 엔진도 활성화되어 있어야 합니다.
- Docker Desktop은 기본적으로 buildx를 포함하고 있으나, 리눅스에서는 수동 설치 필요할 수 있음.
- docker bake가 아니라 docker **buildx** bake라는 점에 유의하세요.
📌 결론
Docker Bake는 복잡한 컨테이너 빌드를 단 하나의 선언형 파일로 통합하고, 병렬 처리와 플랫폼 분기를 통해 빌드 효율성을 극대화할 수 있는 도구입니다.
개발팀 또는 DevOps 환경에서 다수의 마이크로서비스 이미지를 반복해서 빌드해야 하는 경우, Docker Bake는 시간과 실수를 줄여주는 강력한 솔루션이 될 것입니다.
Docker Scout 설치 및 사용 가이드
🔍 Docker Scout 설치 및 사용 가이드: 컨테이너 보안을 자동화하는 도구이미지 보안 진단부터 취약점 리포트까지, Docker Scout 하나면 끝! 🧭 Docker Scout란?Docker Scout는 컨테이너 이미지의 보안 취약점
jjig810906.tistory.com
'Program' 카테고리의 다른 글
Docker Build Cloud 가이드 (2) | 2025.06.06 |
---|---|
Docker + Bun 기반 CI/CD 구성 가이드. JavaScript, TypeScript, JSX 초고속 런타임~! (0) | 2025.06.06 |
Docker Scout 설치 및 사용 가이드 (0) | 2025.06.06 |
도커(Docker) 설치 가이드: Windows, macOS, Linux (0) | 2025.06.06 |
Docker 멀티 스테이지 빌드란? (빌드 시간 단축, 이미지 크기 감소) (0) | 2025.06.06 |