Выбор рабочего процесса сборки и развертывания контейнера

Интерфейс командной строки Azure Developer (azd) может создавать, публиковать и развертывать образы контейнеров в нескольких службах размещения Azure. Рабочий процесс контейнеризации объединяет целевую среду размещения с местом сборки и способом публикации. Оптимальное сочетание зависит от вашего приложения, инструментов, доступных вашей команде, и того, как вы продвигаете образы между средами.

Используйте эту статью для сопоставления этих вариантов с вашими потребностями. Он сравнивает следующие решения:

  • Какая служба Azure размещает контейнер.
  • Независимо от того, собирает ли azd образ локально, собирает ли его удаленно в Реестр контейнеров Azure (ACR) или использует существующий образ.
  • Публикует ли azd и развертывает ли образ вместе или как отдельные шаги.

В этой статье сравниваются эти службы размещения общего назначения:

Начните с сравнения целевых объектов размещения и параметров сборки образов. После того как вы поймёте эти варианты, используйте их, чтобы определить подходящий рабочий процесс в разделе Сравнение рабочих процессов развертывания контейнеров.

Сравнение целевых объектов размещения контейнеров

Свойство host в azure.yaml указывает службу Azure, в которую azd развертывает контейнер. Выберите хост независимо от места сборки образа.

Значение хоста целевая среда размещения Azure Рабочий процесс контейнера Рекомендации
containerapp задания Контейнеры приложений Azure и контейнерных приложений Выполните сборку из проекта и Dockerfile или разверните предварительно созданный образ. Поддерживает переменные среды уровня обслуживания и стратегии развертывания для контейнерных приложений. Используйте то же значение параметра host для заданий Container Apps.
appservice Веб-приложение Linux для контейнеров в Служба приложений Azure Выполните сборку из проекта и Dockerfile или разверните предварительно созданный образ. Инфраструктура должна подготовить сайт с поддержкой контейнеров Linux и настроить для управляемого удостоверения доступ к ACR. azd deploy обновляет только ссылку на изображение.
aks Служба Azure Kubernetes Создайте образ и разверните манифесты Kubernetes, диаграммы Helm или конфигурации Kustomize. Обеспечивает большую часть управления, но требует управления конфигурацией кластера и Kubernetes. Использование Helm или Kustomize с azd требует включения флагов альфа-функций.

Хосты azure.ai.agent и ai.endpoint также поддерживают конфигурацию Docker для специализированных сценариев Microsoft Foundry. Сведения об этих рабочих нагрузках см. в статье «Развертывание в сетевые конечные точки Microsoft Foundry» и в статье «Расширение агента Microsoft Foundry».

Сравнение параметров сборки образа

Определение службы определяет, создает ли azd образ или начинается с существующего образа.

Вариант сборки Требуемая конфигурация Где выполняется сборка Локальный обработчик контейнеров Наиболее подходит для
Локальная сборка project и, при необходимости, docker Ваша среда разработки или CI-раннер Обязательный Быстрые итерации разработки и среды сборки, где уже доступны Docker или Podman.
Удаленная сборка ACR project и docker.remoteBuild: true. Реестр контейнеров Azure (Реестр контейнеров Azure) Не требуется, если azd не возвращается после сбоя удаленной сборки Единообразные облачные сборки и среды без локального контейнерного движка. Документированные рабочие процессы удаленной сборки нацелены на Контейнеры приложений Azure.
Существующий образ, управляемый с помощью azd image Исходная сборка отсутствует Может понадобиться для операций жизненного цикла образов Образы, которые уже существуют локально или в реестре и которые azd может извлекать, помечать тегами и отправлять.
Сквозная передача удалённого изображения image и docker.imagePassthrough: true. Нет сборки Не требуется Полностью определённые удалённые образы, которые размещающий ресурс должен использовать без изменений.

Имейте в виду эти концептуальные различия при чтении статей конфигурации для каждого варианта:

  • Готовый образ использует свойство image вместо project, и azd по-прежнему может загружать, помечать и отправлять его.
  • Удаленная сборка ACR переходит на локальную сборку с помощью Docker или Podman, если удаленная сборка завершается сбоем и доступен поддерживаемый контейнерный движок.
  • Сквозная передача образа требует полного имени удалённого образа, включающего реестр; её нельзя использовать вместе с remoteBuild, и она не поддерживает параметры azd publish --from-package или azd publish --to, поскольку azd не управляет образом.

Полную конфигурацию каждого варианта см. в статье "Поддержка удаленных сборок с Реестр контейнеров Azure", "Использование сторонних реестров контейнеров", развертываний контейнеров службы приложений с Azure CLI разработчика и схемойdocker.

Сравнение рабочих процессов развертывания контейнеров

После того как вы сравните варианты размещения контейнеров в разделе Сравнение вариантов размещения контейнеров и варианты сборки образов в разделе Сравнение вариантов сборки образов, используйте следующую таблицу, чтобы определить наиболее подходящие сценарии работы для ваших задач.

Если понадобится Начать с Почему
Развертывание контейнерного приложения на бессерверной платформе Контейнеры приложений Azure с локальной сборкой Этот рабочий процесс создает и развертывает проект на основе Dockerfile в одном рабочем процессе разработки.
Сборка без локальной установки Docker или Podman Контейнеры приложений Azure с удаленной сборкой через ACR ACR создает образ на основе вашего проекта и Dockerfile в Azure.
Разверните образ, созданный другой системой сборки Контейнеры приложений Azure или служба приложений с предварительно созданным изображением Свойство image определяет существующий образ вместо исходного кода для сборки.
Повторно использовать удалённый образ без загрузки, присвоения тега или отправки Контейнеры приложений Azure с прямой передачей образа azd передает полную ссылку на образ непосредственно ресурсу размещения.
Размещение традиционного веб-приложения в виде контейнера Linux Веб-приложение для контейнеров в Служба приложений Azure App Service предоставляет интегрированную платформу веб-хостинга, а ваша инфраструктура определяет конфигурацию сайта, готовую к развертыванию в контейнере.
Управление манифестами Kubernetes и конфигурацией кластера Azure Kubernetes Service (AKS) 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.