Docker 이미지를 개발 환경에서 직접 빌드하는 방식은 프로젝트 규모가 커질수록 관리가 어려워집니다.
특히 여러 개발자가 협업하거나 운영 서버에 자동 배포해야 하는 경우에는 CI/CD 환경 구축이 필요합니다.
기존 방식:
docker buildx bake --push
직접 실행
↓
Docker Image 생성
↓
Registry Push
하지만 Azure DevOps Pipeline과 Docker Buildx Bake를 연결하면 다음 과정을 자동화할 수 있습니다.
코드 Push
↓
Azure Pipeline 실행
↓
Docker Buildx Bake 실행
↓
Image Build
↓
Container Registry Push
↓
배포
이번 글에서는 Docker Buildx Bake와 Azure DevOps 연동 방법, Azure Pipeline 설정, Docker Registry 연결, Cache 적용, Multi-platform 빌드 자동화 방법까지 자세히 알아보겠습니다.
Docker Buildx Bake Azure DevOps란 무엇인가?
Docker Buildx Bake Azure DevOps는 Azure Pipelines 환경에서 Docker Buildx Bake를 자동 실행하는 CI/CD 구성 방법입니다.
기본 구조:
Azure Repository
↓
azure-pipelines.yml 실행
↓
Docker Buildx 설정
↓
docker buildx bake 실행
↓
Docker Image 생성
Azure DevOps가 Docker 이미지 빌드 과정을 자동으로 관리합니다.
Docker Buildx Bake와 Azure DevOps를 사용하는 이유
수동 Docker Build:
docker buildx bake --push
문제:
- 직접 실행 필요
- Build 환경 차이 발생
- 반복 작업 증가
- 배포 과정 복잡
Azure DevOps 적용:
개발자 Code Push
↓
Pipeline 자동 실행
↓
Docker Image 생성
↓
Registry 저장
장점:
- 자동 빌드
- 자동 배포 가능
- 동일한 Build 환경 유지
- 협업 환경 개선
Azure DevOps Pipeline 기본 구조
Azure Pipeline 파일:
azure-pipelines.yml
기본 예제:
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
- script: |
docker buildx bake
displayName: Build Docker Image
코드가 main Branch에 Push되면 자동 실행됩니다.
Azure DevOps에서 Docker Buildx 설치하기
Microsoft Hosted Agent에서는 Docker 환경을 사용할 수 있습니다.
확인:
docker version
Buildx 확인:
docker buildx version
Builder 생성:
docker buildx create \
--use \
--name azure-builder
결과:
Azure Agent
↓
Buildx Builder 생성
↓
Bake 실행 가능
Docker Buildx Bake Azure DevOps Registry Push 설정
운영 환경에서는 생성한 이미지를 Container Registry에 저장해야 합니다.
대표적인 Registry:
- Azure Container Registry(ACR)
- Docker Hub
- Private Registry
Azure CLI Login:
- task: AzureCLI@2
inputs:
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
az acr login \
--name myregistry
Build Push:
- script: |
docker buildx bake --push
결과:
Azure Pipeline
↓
Docker Build
↓
Container Registry 저장
Docker Buildx Bake Azure DevOps Cache 설정
CI 환경에서는 Cache를 활용하면 Build 속도를 크게 개선할 수 있습니다.
docker-bake.hcl:
target "app" {
cache-from = [
"type=registry,ref=company/cache"
]
cache-to = [
"type=registry,ref=company/cache"
]
}
효과:
- Docker Layer 재사용
- Build 시간 감소
- Pipeline 실행 속도 향상
Docker Buildx Bake Azure DevOps Multi-platform 빌드
Azure Pipeline에서도 여러 플랫폼 이미지를 생성할 수 있습니다.
docker-bake.hcl:
target "app" {
platforms = [
"linux/amd64",
"linux/arm64"
]
}
azure-pipelines.yml:
- script: |
docker buildx bake --push
displayName: Multi Platform Build
결과:
linux/amd64 Image
+
linux/arm64 Image
하나의 Image Tag로 다양한 서버 환경을 지원할 수 있습니다.
Docker Buildx Bake Azure DevOps Secret 관리
민감한 정보는 Pipeline Variables를 사용합니다.
관리 대상:
- Registry Password
- API Token
- SSH Key
Azure DevOps 변수:
DOCKER_USERNAME
DOCKER_PASSWORD
Pipeline:
variables:
DOCKER_PASSWORD: $(dockerPassword)
보안 정보를 직접 파일에 저장하지 않고 사용할 수 있습니다.
Docker Buildx Bake Azure DevOps 실무 예제
프로젝트 구조:
project/
├── Dockerfile
├── docker-bake.hcl
└── azure-pipelines.yml
azure-pipelines.yml:
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
- script: |
docker buildx create \
--use
- script: |
docker buildx bake --push
displayName: Build Docker Image
동작:
Code Push
↓
Azure Pipeline 실행
↓
Docker Image Build
↓
Registry Push
Docker Buildx Bake Azure DevOps와 Azure Container Registry 활용
Azure 환경에서는 ACR과 함께 사용하는 경우가 많습니다.
구조:
Azure DevOps
↓
Docker Buildx Bake
↓
Azure Container Registry
↓
Azure Kubernetes Service
활용:
- AKS 배포
- Container Apps
- Cloud 서버 운영
Docker Buildx Bake Azure DevOps Branch 관리
환경별 Pipeline을 분리할 수 있습니다.
개발:
trigger:
- develop
운영:
trigger:
- main
효과:
- 개발 테스트 자동화
- 운영 배포 보호
- 안정적인 릴리즈 관리
Linux 서버 문제 해결
기존에는 개발자가 직접 Docker Image를 생성했습니다.
기존:
docker buildx bake --push
문제:
- 반복 작업 발생
- 빌드 환경 차이
- 배포 지연
Azure DevOps 적용:
- script: |
docker buildx bake --push
결과:
- Code Push 자동 감지
- Image 자동 생성
- Registry 자동 저장
자동 CI/CD 환경을 구축할 수 있었습니다.
Docker Buildx Bake Azure DevOps 사용 시 주의사항
첫 번째는 Pipeline Agent에 Docker Buildx 환경이 준비되어 있어야 합니다.
두 번째는 Registry 인증 정보를 안전하게 관리해야 합니다.
세 번째는 Cache 설정을 적용하면 Pipeline 시간이 단축됩니다.
네 번째는 운영 Branch에는 승인 단계를 추가하는 것이 좋습니다.
Best Practice
Docker Buildx Bake Azure DevOps 활용 방법:
- azure-pipelines.yml 관리
- docker-bake.hcl 중앙 관리
- Azure Container Registry 활용
- Pipeline Secret 사용
- Cache 적용
- Multi-platform 빌드 구성
- 운영 승인 단계 추가
자주 묻는 질문
Docker Buildx Bake를 Azure DevOps에서 사용할 수 있나요?
가능합니다.
Azure Pipeline Script에서 Docker Buildx Bake 명령을 실행하면 됩니다.
Azure Container Registry와 연동할 수 있나요?
가능합니다.
ACR Login 후 --push 옵션으로 이미지를 저장할 수 있습니다.
Multi-platform Build가 가능한가요?
가능합니다.
linux/amd64와 linux/arm64 이미지를 동시에 생성할 수 있습니다.
Cache를 사용할 수 있나요?
가능합니다.
Registry Cache를 활용하면 반복 빌드 속도를 개선할 수 있습니다.
마무리
Docker Buildx Bake와 Azure DevOps를 함께 사용하면 Docker 이미지 빌드부터 Registry 저장까지 자동화된 CI/CD 환경을 구축할 수 있습니다.
Azure Pipeline을 활용하면 코드 변경 시 자동으로 Buildx Bake를 실행하고, 생성된 이미지를 Container Registry에 저장하여 안정적인 배포 환경을 만들 수 있습니다.
특히 Azure Kubernetes Service(AKS), Azure Container Registry와 함께 사용하면 기업 환경에서 효율적인 Docker 운영 자동화 시스템을 구축할 수 있습니다.