Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как настроить непрерывную интеграцию и непрерывную доставку (CI/CD) для пользовательского образа контейнера из репозиториев управляемого реестра контейнеров Azure или Docker Hub.
1. Перейдите в Центр развертывания
На портале Azure перейдите в область управления для приложения Службы приложений Azure.
В меню слева выберите параметры Настройки центра развертывания.
2. Выбор источника развертывания
Выберите источник развертывания на основе следующих критериев:
- Реестр контейнеров настраивает CI/CD между реестром контейнеров и Службой приложений.
- Выберите параметр GitHub Actions , если вы храните исходный код для образа контейнера в GitHub. Новые коммиты в вашем репозитории GitHub запускают действие развертывания, которое может выполняться
docker build
иdocker push
непосредственно в реестре контейнеров. Затем оно обновляет приложение App Service, чтобы запускать новый образ. Дополнительные сведения см. в разделе Как CI/CD работает с GitHub Actions. - Сведения о настройке CI/CD в Azure Pipelines см. в разделе Развертывание контейнера веб-приложения Azure из Azure Pipelines.
- Для приложения Docker Compose выберите Реестр контейнеров.
Если выбрать GitHub Actions, выберите "Авторизовать " и следуйте инструкциям по авторизации. Если вы ранее авторизовались через GitHub, можно развернуть из репозитория другого пользователя, выбрав изменить учетную запись.
После авторизации учетной записи Azure с помощью GitHub выберите организацию, репозиторий и ветвь для развертывания.
2. Настройка параметров реестра
3. Настройка параметров реестра
Примечание.
Контейнеры-прикрепления (предварительная версия) заменят приложения с несколькими контейнерами (Docker Compose) в Службе приложений. См. руководство по настройке побочного контейнера для пользовательских контейнеров в службе приложений Azure (предварительная версия), чтобы начать работу.
Чтобы развернуть приложение с несколькими контейнерами ( Docker Compose), выберите Docker Compose в типе контейнера.
Если вы не видите раскрывающийся список тип контейнера, прокрутите вверх до источника и выберите реестр контейнеров.
В источнике реестра выберите расположение реестра контейнеров. Если это не реестр контейнеров Azure или Центр Docker, выберите частный реестр.
Примечание.
Если приложение с несколькими контейнерами (Docker Compose) использует несколько частных образов, убедитесь, что частные образы находятся в одном частном реестре и доступны с теми же учетными данными пользователя. Если приложение с несколькими контейнерами использует только общедоступные образы, выберите Docker Hub, даже если некоторые образы не используются в Docker Hub.
Выполните следующие действия, выбирая соответствующие вкладки.
В раскрывающемся списке реестра отображаются реестры в той же подписке, что и приложение. Выберите нужный реестр.
Чтобы развернуть из реестра, находящегося в другой подписке, вместо этого выберите частный реестр в источнике реестра.
Сведения об использовании управляемых удостоверений для блокировки доступа к реестру контейнеров Azure см. в статье:
- Использование управляемых удостоверений, назначенных системой, с помощью службы приложений и реестра контейнеров Azure
- Использование управляемых удостоверений, назначаемых пользователем, с службой приложений и реестром контейнеров Azure
Выберите изображение и тег для развертывания. Вы можете ввести команду запуска в файле запуска.
Выполните следующий шаг в зависимости от значения типа контейнера :
- Для Docker Compose выберите реестр для частных образов. Выберите "Выбрать файл " для отправки файла Docker Compose или просто вставьте содержимое файла Docker Compose в Config.
- Для одного контейнера выберите образ и тег для развертывания. Вы можете ввести команду запуска в файле запуска.
Служба приложений добавляет строку в файл запуска в конец команды docker run
(в качестве сегмента [COMMAND] [ARG...]
) при запуске контейнера.
3. Включение CI/CD
4. Включение CI/CD
Служба приложений поддерживает интеграцию CI/CD с Реестром контейнеров Azure и Docker Hub. Чтобы включить интеграцию CI/CD, выберите "Включено " в непрерывном развертывании.
Примечание.
Если выбрать GitHub Actions в источнике, этот параметр не отображается, так как CI/CD обрабатывается непосредственно GitHub Actions. Вместо этого вы увидите раздел "Конфигурация рабочего процесса ", где можно выбрать файл предварительного просмотра для проверки файла рабочего процесса. Azure выполняет фиксацию этого файла в выбранном вами репозитории GitHub для обработки задач сборки и развертывания. Дополнительные сведения см. в разделе Как CI/CD работает с GitHub Actions.
При включении этого параметра Служба приложений добавляет веб-перехватчик в ваш репозиторий в Реестре контейнеров Azure или Docker Hub. Ваш репозиторий отправляется в этот веб-перехватчик при каждом обновлении выбранного образа с помощью docker push
. Веб-перехватчик вызывает перезапуск вашего приложения Службы приложений и выполнение docker pull
, чтобы получить обновленное изображение.
Чтобы обеспечить надлежащее функционирование веб-перехватчика, важно включить параметр "Базовые учетные данные публикации проверки подлинности " в веб-приложении. Если вы этого не сделали, может появиться ошибка "401 несанкционированного" для веб-перехватчика.
Чтобы проверить, включена ли базовая проверка подлинности учетные данные публикации, перейдите кобщим параметрамконфигурации> веб-приложения. Найдите раздел "Параметры платформы ", а затем выберите параметр "Базовые учетные данные для публикации проверки подлинности ".
Для других частных реестров вы можете опубликовать веб-перехватчик вручную или как шаг в конвейере CI/CD. В URL-адресе веб-перехватчика нажмите кнопку "Копировать ", чтобы получить URL-адрес веб-перехватчика.
Примечание.
Поддержка приложений с несколькими контейнерами (Docker Compose) ограничена. Для Реестра контейнеров Azure Служба приложений создает веб-перехватчик в выбранном реестре с реестром в качестве области.
docker push
в любой репозиторий в реестре (включая те, на которые не ссылается файл Docker Compose) активирует перезапуск приложения. Возможно, потребуется изменить веб-перехватчик на более узкий. Docker Hub не поддерживает веб-перехватчики на уровне реестра. Необходимо вручную добавить вебхуки в образы, указанные в файле Docker Compose.
4. Сохранение параметров
5. Сохранение параметров
Выберите Сохранить.
Как CI/CD работает с GitHub Actions
Если в качестве источника вы выбрали GitHub Actions (см. раздел Выбор источника развертывания), Служба приложений настраивает CI/CD следующим образом.
- Он помещает файл рабочего процесса GitHub Actions в репозиторий GitHub для обработки задач сборки и развертывания в Службе приложений.
- Он добавляет учетные данные для частного реестра в качестве секретов GitHub. Созданный файл рабочего процесса запускает действие
Azure/docker-login
для входа в ваш частный реестр, а затем действиеdocker push
для его развертывания. - Он добавляет профиль публикации вашего приложения в качестве секрета GitHub. Созданный файл рабочего процесса использует этот секрет для проверки подлинности в Службе приложений, а затем запускает
Azure/webapps-deploy
действие для настройки обновленного образа, которое активирует перезапуск приложения для извлечения обновленного образа. - Он записывает сведения из журналов выполнения рабочего процесса и отображает его на вкладке "Журналы " в Центре развертывания приложения.
Вы можете настроить поставщик сборки GitHub Actions следующими способами.
- Настройте файл рабочего процесса после его создания в репозитории GitHub. Дополнительные сведения см. в статье о синтаксисе рабочего процесса для GitHub Actions. Рабочий процесс должен завершиться действием
Azure/webapps-deploy
для запуска перезапуска приложения. - Если выбранная ветвь защищена, вы по-прежнему можете просмотреть файл рабочего процесса без сохранения конфигурации. Добавьте его и необходимые секреты GitHub в репозиторий вручную. Этот способ не обеспечивает интеграцию журналов с порталом Azure.
- Вместо профиля публикации, разверните с помощью служебного принципала в Microsoft Entra ID.
Аутентификация с помощью учетной записи службы
Эта необязательная конфигурация заменяет проверку подлинности по умолчанию профилями публикации в созданном файле рабочего процесса.
Создайте субъект-службу с помощью az ad sp create-for-rbac
команды в Azure CLI. В следующем примере замените текст в полях <subscription-id>, <group-name> и <app-name> своими значениями. Сохраните весь результат JSON для следующего шага, включая верхний уровень {}
.
az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
--json-auth
Внимание
Чтобы обеспечить безопасность, предоставьте минимально необходимый доступ к субъекту-службе. Область в предыдущем примере ограничена конкретным приложением Службы приложений, а не всей группой ресурсов.
В GitHub перейдите в ваш репозиторий, а затем выберите Настройки>Секреты>Добавить новый секрет. Вставьте все выходные данные JSON, полученные из команды Azure CLI, в поле значения секрета. Присвойте секрету имя, например AZURE_CREDENTIALS
.
В файле рабочего процесса, созданном Центром развертывания, выполните изменение azure/webapps-deploy
шага с кодом, аналогичным следующему примеру:
- name: Sign in to Azure
# Use the GitHub secret you added
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
# Remove publish-profile
- uses: azure/webapps-deploy@v2
with:
app-name: '<app-name>'
slot-name: 'production'
images: '<registry-server>/${{ secrets.AzureAppService_ContainerUsername_... }}/<image>:${{ github.sha }}'
- name: Sign out of Azure
run: |
az logout
Автоматизация с помощью CLI
Чтобы настроить реестр контейнеров и образ Docker, выполните команду az webapp config container set
.
az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name '<image>:<tag>' --docker-registry-server-url 'https://<registry-name>.azurecr.io' --docker-registry-server-user '<username>' --docker-registry-server-password '<password>'
Чтобы настроить приложение с несколькими контейнерами (Docker Compose), подготовьте файл Docker Compose локально, а затем запустите az webapp config container set
с параметром --multicontainer-config-file
. Если файл Docker Compose содержит частные изображения, добавьте --docker-registry-server-*
параметры, как показано в предыдущем примере.
az webapp config container set --resource-group <group-name> --name <app-name> --multicontainer-config-file <docker-compose-file>
Чтобы настроить CI/CD из реестра контейнеров в приложении, выполните команду az webapp deployment container config
с параметром --enable-cd
. Эта команда выводит URL-адрес веб-перехватчика, но вы должны вручную создать веб-перехватчик в реестре на отдельном шаге. Следующий пример включает CI/CD в приложении, а затем использует URL-адрес веб-перехватчика в выходных данных для создания веб-перехватчика в реестре контейнеров Azure.
ci_cd_url=$(az webapp deployment container config --name <app-name> --resource-group <group-name> --enable-cd true --query CI_CD_URL --output tsv)
az acr webhook create --name <webhook-name> --registry <registry-name> --resource-group <group-name> --actions push --uri $ci_cd_url --scope '<image>:<tag>'
Связанный контент
- Реестр контейнеров Azure;
- Создание веб-приложения .NET Core в службе приложений на платформе Linux
- Краткое руководство: запуск пользовательского контейнера в App Service
- Служба приложений под управлением Linux: вопросы и ответы
- Настройка пользовательских контейнеров
- Рабочие процессы действий для развертывания в Azure