컨테이너 빌드 및 배포 워크플로 선택

Azure 개발자 CLI(azd)는 여러 Azure 호스팅 서비스에서 컨테이너 이미지를 빌드, 게시 및 배포할 수 있습니다. 컨테이너 워크플로는 호스팅 대상을 빌드 위치 및 게시 접근 방식과 결합합니다. 최상의 조합은 애플리케이션, 팀에서 사용할 수 있는 도구 및 환경 간에 이미지를 승격하는 방법에 따라 달라집니다.

이 문서를 사용하여 이러한 선택 사항을 요구 사항에 맞게 일치시킬 수 있습니다. 다음 결정을 비교합니다.

  • 컨테이너를 호스팅하는 Azure 서비스는 무엇인가요?
  • 이미지를 로컬로 빌드하든azd, ACR(Azure Container Registry)에서 원격으로 빌드하든, 기존 이미지를 사용하는지 여부입니다.
  • azd가 이미지를 함께 게시 및 배포할지, 아니면 별도 단계로 게시 및 배포할지 여부.

이 문서에서는 이러한 범용 호스팅 서비스를 비교합니다.

호스팅 대상 및 이미지 빌드 옵션을 비교하여 시작합니다. 이러한 선택 사항을 이해한 후에는 컨테이너 배포 워크플로 비교 섹션에서 후보 워크플로를 식별하는 데 사용합니다.

컨테이너 호스팅 대상 비교

이 azure.yaml 속성은 host 컨테이너를 배포하는 azd Azure 서비스를 식별합니다. 이미지 빌드 위치에서 독립적으로 호스트를 선택합니다.

호스트 값 Azure 호스팅 대상 컨테이너 워크플로 Considerations
containerapp Azure Container Apps 및 Container Apps 작업 프로젝트 및 Dockerfile에서 빌드하거나 미리 빌드된 이미지를 배포합니다. 서비스 수준 환경 변수 및 Container Apps 관련 배포 전략을 지원합니다. Container Apps 작업에 동일한 호스트 값을 사용합니다.
appservice Azure App Service 컨테이너용 Linux Web App 프로젝트 및 Dockerfile에서 빌드하거나 미리 빌드된 이미지를 배포합니다. 인프라는 Linux 컨테이너 지원 사이트를 프로비전하고 ACR에 대한 관리 ID 액세스를 구성해야 합니다. azd deploy 는 이미지 참조만 업데이트합니다.
aks Azure Kubernetes Service 이미지를 빌드하고 Kubernetes 매니페스트, Helm 차트 또는 Kustomize 구성을 배포합니다. 가장 많은 제어를 제공하지만 클러스터 및 Kubernetes 구성을 관리해야 합니다. azd와 함께 Helm 또는 Kustomize를 사용하려면 알파 기능 플래그를 활성화해야 합니다.

또한 호스트는 ai.endpointazure.ai.agent 특수 Microsoft Foundry 시나리오에 대한 Docker 구성을 지원합니다. 이러한 워크로드의 경우 Microsoft Foundry 온라인 엔드포인트 및 Microsoft Foundry 에이전트 확장에 배포를 참조하세요.

이미지 빌드 옵션 비교

서비스 정의는 이미지를 빌드할지 아니면 azd 기존 이미지로 시작하는지를 결정합니다.

빌드 옵션 필요한 구성 빌드가 실행되는 위치 로컬 컨테이너 엔진 가장 적합한 용도
로컬 빌드 project 및 필요에 따라 docker 개발 환경 또는 CI 러너 필수 Docker 또는 Podman을 이미 제공하는 빠른 개발 반복 및 빌드 환경
ACR 원격 빌드 project 및 docker.remoteBuild: true Azure Container Registry (애저 컨테이너 레지스트리) 원격 빌드 실패 후 다시 실패하지 않는 한 azd 필요하지 않습니다. 로컬 컨테이너 엔진이 없는 일관된 클라우드 빌드 및 환경. 문서화된 원격 빌드 워크플로는 Azure Container Apps 대상으로 합니다.
azd에서 관리하는 기존 이미지 image 원본 빌드 없음 이미지 수명 주기 작업에 필요할 수 있습니다. 로컬 또는 레지스트리에 이미 존재하며 azd가 가져오고, 태그를 지정하고, 푸시할 수 있는 이미지입니다.
원격 이미지 통과 image 및 docker.imagePassthrough: true 빌드 없음 필요하지 않음 호스팅 리소스에서 as-is사용해야 하는 정규화된 원격 이미지입니다.

옵션별 구성 문서를 읽을 때는 다음과 같은 개념적 차이점을 염두에 두어야 합니다.

  • 미리 빌드된 이미지는 image 대신 project 속성을 사용하며, azd는 여전히 이를 가져오고, 태그를 지정하고, 푸시할 수 있습니다.
  • ACR 원격 빌드는 원격 빌드가 실패하고 지원되는 컨테이너 엔진을 사용할 수 있는 경우 로컬 Docker 또는 Podman 빌드로 대체됩니다.
  • 이미지 패스스루에는 레지스트리를 포함한 정규화된 원격 이미지 참조가 필요하며, remoteBuild와 함께 사용할 수 없고, azd publish --from-package가 이미지를 관리하지 않으므로 azd publish --to 또는 azd 옵션을 지원하지 않습니다.

각 옵션의 전체 구성은 Azure Container Registry 사용한 원격 빌드 지원, 타사 컨테이너 레지스트리 사용, Azure Developer CLI를 사용한 App Service 컨테이너 배포 및 스키마를docker 참조하세요.

컨테이너 배포 워크플로 비교

컨테이너 호스팅 대상 비교의 호스팅 대상과 이미지 빌드 비교 옵션의 빌드 옵션을 비교한 후 다음 표를 사용하여 요구 사항에 가장 적합한 워크플로를 식별합니다.

필요한 경우 시작하기 이유
서버리스 플랫폼에 컨테이너화된 애플리케이션 배포 로컬 빌드를 사용하는 Azure Container Apps 이 워크플로는 Dockerfile 기반 프로젝트를 하나의 개발 워크플로에 빌드하고 배포합니다.
Docker 또는 Podman을 로컬로 설치하지 않고 빌드 ACR 원격 빌드를 사용하는 Azure Container Apps ACR은 Azure 프로젝트 및 Dockerfile에서 이미지를 빌드합니다.
다른 빌드 시스템에서 생성하는 이미지 배포 사전 빌드된 이미지가 있는 Azure Container Apps 또는 App Service 이 속성은 image 빌드할 소스 코드 대신 기존 이미지를 식별합니다.
원격 이미지를 끌어서, 태그 지정 또는 푸시하지 않고 다시 사용 이미지 패스스루를 사용하는 Azure Container Apps azd 는 정규화된 이미지 참조를 호스팅 리소스에 직접 전달합니다.
기존 웹 애플리케이션을 Linux 컨테이너로 호스트 Azure App Service의 컨테이너용 웹 앱 App Service는 통합 웹 호스팅 플랫폼을 제공하고 인프라는 컨테이너 준비 사이트 구성을 제어합니다.
Kubernetes 매니페스트 및 클러스터 구성 제어 AKS(Azure Kubernetes Service) azd 에서는 이미지를 빌드하고 게시한 다음 Kubernetes 매니페스트, Helm 차트 또는 Kustomize 구성을 배포할 수 있습니다.
한 번 빌드하고 동일한 이미지를 여러 환경에 걸쳐 승격하세요 azd publish, 그 다음 azd deploy --from-package 게시 및 배포는 별개이므로 각 환경은 동일한 이미지를 받습니다.

각 행은 컨테이너 호스팅 대상 비교 의 호스팅 선택 항목과 이미지 빌드 비교 옵션 의 빌드 선택 항목을 시작점으로 결합합니다. 선택 azure.yaml항목을 구성하고 Bicep 또는 Terraform 파일이 해당 호스팅 및 레지스트리 리소스를 프로비전하도록 합니다.

최소 서비스 정의는 host빌드 원본 및 Dockerfile을 설정합니다.

services:
  api:
    project: ./src/api
    language: docker
    host: containerapp
    docker:
      path: ./Dockerfile

이 정의를 다른 호스트에 맞게 조정하려면 값을 변경 host 하고 호스트별 구성 계약을 따릅니다.

게시 및 배포 명령 비교

호스트 및 빌드 옵션을 선택한 후 이미지 게시 및 배포를 결합할지 또는 구분할지를 선택합니다.

Command 이미지 작업 Azure 리소스 작업 사용 시기
azd up 빌드 및 푸시하기 프로비저닝 및 배포 전체 환경을 만들거나 업데이트하고 애플리케이션을 하나의 워크플로에 배포하려고 합니다.
azd deploy 빌드 및 푸시 배포 인프라가 이미 있으며 애플리케이션 변경 내용을 배포하려고 합니다.
azd publish 빌드 및 푸시 없음 레지스트리 아티팩트를 배포하지 않고 만들려고 합니다. azd publish 는 Container Apps 및 AKS 서비스를 지원합니다.
azd publish --from-package <image> 기존 로컬 이미지 푸시 없음 다른 프로세스가 이미지를 빌드했으며, 이를 azd가 배포하기를 원합니다.
azd deploy --from-package <image> 없음 배포 특정 이미지를 다시 빌드하지 않고 배포하려고 합니다.

예를 들어 버전이 지정된 이미지를 게시하고 동일한 이미지를 다른 환경에 배포합니다.

azd publish api --to myregistry.azurecr.io/my-api:v1.0.0
azd env select production
azd deploy api --from-package myregistry.azurecr.io/my-api:v1.0.0

이 워크플로는 각 환경에 대한 이미지를 다시 빌드할 때 발생할 수 있는 차이를 방지합니다. 전체 승격 워크플로는 Azure Developer CLI 게시 워크플로를 참조하세요.