Docker Buildx Bake Azure DevOps 사용법 완벽 가이드! Azure Pipeline 자동 빌드 구성하기

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 운영 자동화 시스템을 구축할 수 있습니다.

댓글 남기기