Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба приложений Azure предоставляет стандартные стеки приложений, например ASP.NET или Node.js в Windows. Эти стеки приложений работают под управлением IIS. Предварительно настроенная среда Windows защищает операционную систему от следующего:
- Административный доступ.
- Установки программного обеспечения
- изменения в глобальном кэше сборок.
Дополнительные сведения см. в разделе Функциональность операционной системы в App Service.
Вы можете развернуть специально настроенный образ Windows из Visual Studio, чтобы внести в ОС изменения, необходимые для вашего приложения. Это упрощает перенос локального приложения, требующего настраиваемой конфигурации ОС и программного обеспечения. В этом руководстве показано, как перенести в App Service приложение ASP.NET, которое использует пользовательские шрифты, установленные в библиотеке шрифтов Windows. Вы развертываете настраиваемый образ Windows из Visual Studio в Реестр контейнеров Azure, а затем запускаете его в App Service.
Предварительные требования
- Создайте учетную запись Docker Hub.
- Установите Docker для ОС Windows.
- Настройте Docker для запуска контейнеров Windows.
-
Установите Visual Studio 2022, а также следующие рабочие нагрузки: ASP.NET и веб-разработка и разработка Azure. Если у вас уже установлен Visual Studio 2022:
- Установите последние обновления для Visual Studio, выбрав Справка>Проверить наличие обновлений.
- Добавьте рабочие средства в Visual Studio, выбрав Инструменты>Получить средства и компоненты.
Настройте приложение локально
Скачать пример
На этом шаге вы настроите локальный проект .NET.
- Скачайте пример проекта.
- Извлеките (распакуйте) содержимое файла custom-font-win-container-master.zip.
Пример проекта содержит простое приложение ASP.NET, использующее настраиваемый шрифт, установленный в библиотеке шрифтов Windows. Устанавливать шрифты необязательно. Однако этот пример представляет собой пример приложения, интегрированного с базовой ОС. Чтобы перенести такое приложение в App Service, переработайте код, чтобы удалить интеграцию, либо перенесите его «как есть» в пользовательском контейнере Windows.
Установите шрифт
В проводнике Windows перейдите к custom-font-win-container-master/CustomFontSample, щелкните правой кнопкой мыши FrederickatheGreat-Regular.ttf и выберите Установить.
Этот шрифт находится в свободном доступе на веб-сайте Google Fonts.
Запустить приложение
Откройте файл custom-font-win-container-master/CustomFontSample.sln в Visual Studio.
Выберите клавиши Ctrl+F5, чтобы запустить приложение без отладки. Это приложение откроется в браузере по умолчанию.
Так как приложение использует установленный шрифт, приложение не может выполняться в песочнице службы приложений. Однако его можно развернуть с помощью контейнера Windows, так как шрифт можно установить в контейнере Windows.
Настроить контейнер Windows
В обозревателе решений щелкните правой кнопкой мыши проект CustomFontSample и выберите Добавить>Container Orchestration Support (Поддержка оркестрации контейнеров).
Выберите Docker Compose>ОК.
Теперь проект настроен для запуска в контейнере Windows. В проект CustomFontSample добавляется Dockerfile, а в решение добавляется проект docker-compose.
В обозревателе решений откройте Dockerfile.
Необходимо использовать поддерживаемый родительский образ. Измените базовый образ, заменив строку FROM приведенным ниже кодом.
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
Добавьте следующую строку в конец файла и сохраните файл:
RUN ${source:-obj/Docker/publish/InstallFont.ps1}
Файл InstallFont.ps1 можно найти в проекте CustomFontSample. Это простой сценарий, который устанавливает шрифт. Более сложную версию скрипта можно найти в коллекция PowerShell.
Примечание
Чтобы протестировать контейнер Windows локально, убедитесь, что на локальном компьютере запущен Docker.
Опубликовать в Реестре контейнеров Azure
В Реестре контейнеров Azure можно хранить образы для развертывания контейнеров. App Service можно настроить для использования образов, размещенных в Container Registry.
Откройте окно публикации
В обозревателе решений щелкните правой кнопкой мыши проект CustomFontSample и выберите "Опубликовать".
Создайте и опубликуйте реестр
В окне Publish выберите Azure, а затем нажмите кнопку "Далее".
Выберите Реестр контейнеров Azure, а затем нажмите Далее.
Выберите подписку, в которой нужно опубликовать реестр, а затем нажмите кнопку "Создать".
Вход с помощью учетной записи Azure
В окне реестра контейнеров Azure выберите "Добавить учетную запись", а затем войдите в подписку Azure. Если вы уже выполнили вход, выберите учетную запись, содержащую нужную подписку из раскрывающегося списка.
Настройте реестр
Настройте новый реестр контейнеров с помощью предлагаемых значений в следующей таблице в качестве руководства. По завершении выберите Создать.
| Настройка | Предлагаемое значение |
|---|---|
| Префикс DNS | Оставьте созданное имя записи реестра или измените его, указав другое уникальное имя. |
| Группа ресурсов | Нажмите кнопку "Создать", введите myResourceGroup и нажмите кнопку "ОК". |
| SKU | Базовый. Дополнительные сведения см. в разделе Ценовые категории. |
| Расположение реестра | Западная Европа |
Нажмите Готово.
Откроется окно терминала, и отобразится ход развертывания образа. Дождитесь завершения развертывания.
Вход в Azure
Войдите на портал Azure.
Создать веб-приложение
Выберите Создать ресурс, а затем выберите Создать в разделе Веб-приложение.
Настройте основные сведения о приложении
На вкладке Основы настройте параметры с помощью следующей таблицы в качестве руководства.
| Настройка | Предлагаемое значение |
|---|---|
| Подписка | Убедитесь, что отображается правильная подписка. |
| Группа ресурсов | Нажмите кнопку "Создать новый", введите myResourceGroup и нажмите "ОК". |
| Имя | Введите уникальное имя. URL-адрес веб-приложения: https://<app-name>.azurewebsites.net, где <app-name> — имя вашего приложения. |
| Опубликовать | Контейнер |
| Операционная система | Windows |
| Регион | Западная Европа |
| План Windows | Нажмите кнопку "Создать новый", введите myAppServicePlan и нажмите "ОК". |
Вкладка "Основные сведения" должна выглядеть примерно так:
Настройте контейнер Windows
На вкладке Контейнер настройте пользовательский контейнер Windows, как показано в следующей таблице, а затем выберите Проверить и создать
| Настройка | Предлагаемое значение |
|---|---|
| Источник изображения | Реестр контейнеров Azure |
| Реестр | Выберите созданный ранее реестр. |
| Изображение | customfontsample |
| Тег | последний |
Завершить создание приложения
Нажмите Создать и подождите, пока Azure создаст необходимые ресурсы.
Перейдите в веб-приложение
По завершении развертывания появится сообщение уведомления:
Выберите Перейти к ресурсу.
На странице приложения щелкните ссылку под URL.
В браузере откроется следующая страница:
Подождите несколько минут и повторите попытку, пока не получите домашнюю страницу с ожидаемым шрифтом:
Поздравляем! Вы перенесли приложение ASP.NET в службу приложений в контейнере Windows.
Просмотр журналов запуска контейнера
Загрузка контейнера Windows может занять некоторое время. Чтобы просмотреть ход выполнения, перейдите по следующему URL-адресу. (Замените <название приложения> названием вашего приложения.)
https://<app-name>.scm.azurewebsites.net/api/logstream
Потоковые логи выглядят следующим образом:
14/09/2018 23:16:19.889 INFO - Site: fonts-win-container - Creating container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest.
14/09/2018 23:16:19.928 INFO - Site: fonts-win-container - Create container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest succeeded. Container Id 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:23.405 INFO - Site: fonts-win-container - Start container succeeded. Container: 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Configuring container
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container start-up and configuration completed successfully
Служба приложений Azure использует технологию контейнеров Docker для размещения встроенных образов и пользовательских образов. Чтобы просмотреть список встроенных образов, выполните команду Azure CLI, az webapp list-runtimes --os linux. Если эти образы не соответствуют вашим требованиям, вы можете создать и развернуть пользовательский образ.
Примечание
Контейнер должен ориентироваться на архитектуру x86-64. ARM64 не поддерживается.
В этом руководстве вы узнаете, как:
- Отправьте пользовательский образ Docker в Реестр контейнеров Azure.
- Разверните пользовательский образ в Службе приложений.
- Настройте переменные среды.
- Получите образ контейнера в App Service с помощью управляемого удостоверения.
- Откройте журналы диагностики.
- Включите CI/CD из реестра контейнеров в App Service.
- Подключитесь к контейнеру с помощью SSH.
За выполнение этого руководства взимается небольшая плата в вашей учетной записи Azure за реестр контейнеров, а также это может повлечь дополнительные расходы, если вы размещаете контейнер дольше месяца.
Настройте начальную среду
Для работы с этим учебником требуется Azure CLI версии 2.0.80 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
- Убедитесь, что у вас есть учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы используете Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и установленные зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
- Установите Docker для создания образов Docker. Для установки Docker может потребоваться перезагрузка компьютера.
После установки Docker откройте окно терминала и убедитесь, что Docker установлен.
docker --version
Клонируйте или скачайте пример приложения
Пример этого руководства можно получить с помощью Git clone или скачивания.
Клонируйте репозиторий с помощью Git Bash
Клонируйте репозиторий примера.
git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input
Убедитесь, что вы указали аргумент --config core.autocrlf=input, чтобы гарантировать правильные окончания строк в файлах, используемых в контейнере Linux.
Затем перейдите к папке:
cd docker-django-webapp-linux
Скачайте ZIP-файл из GitHub
Вместо использования Git clone можно перейти по ссылке https://github.com/Azure-Samples/docker-django-webapp-linux и выбрать Code>Local>Download ZIP.
Распакуйте ZIP-файл в папку с именем docker-django-webapp-linux.
Затем откройте окно терминала в папке docker-django-webapp-linux .
Подготовьте контейнер для образцов
Новые браузерный терминал и az webapp exec обеспечивают аутентифицированный доступ к запущенным контейнерам Linux без необходимости в SSH-сервере или встроенном в образ пароле SSH. Устаревшие Kudu WebSSH и доступ через az webapp ssh всё равно могут требовать SSH-сервера. Репозиторий сэмпла содержит устаревшую SSH-конфигурацию. Перед сборкой замените содержимое Dockerfile на следующую конфигурацию только для приложения:
FROM tiangolo/uwsgi-nginx-flask:python3.6
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt --no-cache-dir
ADD . /code/
COPY init.sh /usr/local/bin/
RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 8000
ENTRYPOINT ["init.sh"]
Замените содержимое init.sh следующим скриптом, сохраняя окончания строк Linux:
#!/bin/bash
set -e
exec python /code/manage.py runserver 0.0.0.0:8000
Удалите файл legacy sshd_config из вашей локальной папки samples, чтобы ADD . /code/ не копировал его в образ.
Dockerfile устанавливает зависимости приложения, копирует приложение и скрипт запуска, а также объявляет порт приложения. Точка входа запускает только приложение Python. Эти изменения убирают установку SSH и учетные данные примера. На изображении показаны новый браузерный терминал /bin/bash и стандартная оболочка az webapp exec.
Соберите и протестируйте образ локально
Примечание
Docker Hub накладывает квоты на количество анонимных скачиваний на IP-адрес и количество аутентифицированных скачиваний на бесплатного пользователя. Если вы заметили, что ваши загрузки из Docker Hub ограничиваются, попробуйте запустить docker login, если вы еще не авторизовались.
Запустите следующую команду, чтобы собрать образ:
docker build --tag appsvc-tutorial-custom-image .Убедитесь, что сборка работает, запустив контейнер Docker на локальном компьютере.
docker run -it -p 8000:8000 appsvc-tutorial-custom-imageЭта
docker runкоманда указывает порт с помощью аргумента-pи содержит имя образа.-itпозволяет остановить его с помощью ctrl+C.Совет
Если вы используете Windows и видите ошибку *standard_init_linux.go:211: exec user process caused "no such file or directory", файл init.sh содержит окончания строк CRLF вместо ожидаемых окончаний LF. Эта ошибка возникает, если вы использовали Git для клонирования примера репозитория, но опустили
--config core.autocrlf=inputпараметр. В этом случае клонируйте репозиторий еще раз с аргументом--config. Вы также можете получить аналогичную ошибку, если редактировали файл init.sh и сохранили его с окончаниями строк CRLF. В этом случае сохраните его снова только с окончаниями строк LF.Перейдите по адресу
http://localhost:8000, чтобы проверить правильность работы веб-приложения и контейнера.
Создание управляемой идентичности, назначаемой пользователем
App Service может использовать либо управляемый идентификатор по умолчанию, либо управляемый идентификатор, назначаемый пользователем, для проверки подлинности в реестре контейнеров. В этом руководстве вы будете использовать управляемую идентификацию, назначаемую пользователем.
Выполните команду az group create, чтобы создать группу ресурсов.
az group create --name msdocs-custom-container-tutorial --location westeuropeВы можете изменить значение
--location, чтобы указать близкий к вам регион.Создайте управляемую идентичность в группе ресурсов:
az identity create --name myID --resource-group msdocs-custom-container-tutorial
Создание реестра контейнеров
Создайте реестр контейнеров с помощью следующей
az acr createкоманды. Замените<registry-name>уникальным именем вашего реестра. Имя должно содержать только буквы и цифры, и должно быть уникальным во всех службах Azure.az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled trueПараметр
--admin-enabledпозволяет отправлять образы в реестр с помощью учетных данных администратора.Получите учетные данные администратора, выполнив
az credential acr showкоманду:az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>Выходные данные этой команды содержат два пароля и имя пользователя для реестра в формате JSON.
Отправьте пример образа в Container Registry
В этом разделе описано, как отправить образ в реестр контейнеров, который позже используется App Service.
В локальном терминале, где вы создали образ примера, используйте
docker loginкоманду для входа в реестр контейнеров:docker login <registry-name>.azurecr.io --username <registry-username>Замените
<registry-name>и<registry-username>значениями из предыдущих шагов. При появлении запроса введите один из паролей из предыдущего раздела.Используйте то же имя реестра во всех остальных шагах этого раздела.
После успешного входа присвойте локальному образу Docker тег реестра:
docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestС помощью команды
docker pushотправьте образ в реестр.docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestПервая загрузка образа может занять несколько минут, поскольку он включает базовый образ. Все последующие отправки обычно выполняются быстрее.
Пока вы ждете завершения, вы можете выполнить шаги, описанные в следующем разделе, то есть настроить развертывание из реестра в Службе приложений.
Авторизуйте управляемую идентичность для реестра
Созданная управляемая идентификация еще не имеет разрешения на извлечение из реестра контейнеров. На этом шаге вы настроите авторизацию.
Получите идентификатор участника-службы для управляемого идентификатора:
principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)Получите идентификатор ресурса для реестра контейнеров:
registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)Предоставьте управляемому удостоверению разрешение на доступ к реестру контейнеров.
az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"Дополнительные сведения об этих разрешениях см. в статье "Что такое управление доступом на основе ролей Azure?".
Создать веб-приложение
Создайте план службы приложений с помощью
az appservice plan createкоманды:az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linuxплан службы приложений соответствует виртуальной машине, в которой размещено веб-приложение. По умолчанию предыдущая команда использует недорогую ценовую категорию B1, которая бесплатна в течение первого месяца. Уровень можно указать с помощью
--skuпараметра.Создайте веб-приложение командой
az webapp create:az webapp create --resource-group msdocs-custom-container-tutorial --plan myAppServicePlan --name <app-name> --deployment-container-image-name <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestЗамените
<app-name>именем веб-приложения. Имя должно быть уникальным во всей Azure. Также замените<registry-name>именем реестра из предыдущего раздела.Совет
Вы можете в любой момент получить параметры контейнера для веб-приложения с помощью команды
az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorial. Это изображение задается в свойствеDOCKER_CUSTOM_IMAGE_NAME. Когда веб-приложение развертывается через шаблоны Azure DevOps или Azure Resource Manager, этот же образ может отображаться и в свойстве с именемLinuxFxVersion. Оба этих свойства имеют одинаковое назначение. Если они оба присутствуют в конфигурации веб-приложения, приоритет отдаетсяLinuxFxVersion.
Настройте веб-приложение
На этом шаге вы настроите веб-приложение следующим образом:
- Настройте приложение для отправки запросов на порт 8000. Тестовый контейнер прослушивает порт 8000 для веб-запросов.
- Настройте приложение, чтобы использовать управляемую идентичность для получения образов из реестра контейнеров.
- Настройте непрерывное развертывание из реестра контейнеров. (Каждая отправка образа в реестр запустит скачивание нового образа вашим приложением.) Этот шаг не требуется для настройки веб-приложения на скачивание из реестра контейнеров, но он может уведомить веб-приложение о отправке нового образа в реестр. Если этот шаг не выполнен, необходимо вручную активировать загрузку образа, перезагрузив веб-приложение.
Используйте
az webapp config appsettings set, чтобы задать переменную средыWEBSITES_PORT, которую ожидает код приложения.az webapp config appsettings set --resource-group msdocs-custom-container-tutorial --name <app-name> --settings WEBSITES_PORT=8000Замените
<app-name>именем, которое вы использовали на предыдущем шаге.Включите управляемое удостоверение, назначаемое пользователем, в веб-приложении с помощью команды
az webapp identity assign:id=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query id --output tsv) az webapp identity assign --resource-group msdocs-custom-container-tutorial --name <app-name> --identities $idЗамените
<app-name>значением, которое вы использовали на предыдущем шаге.Настройте приложение для извлечения из Container Registry с помощью управляемых удостоверений.
appConfig=$(az webapp config show --resource-group msdocs-custom-container-tutorial --name <app-name> --query id --output tsv) az resource update --ids $appConfig --set properties.acrUseManagedIdentityCreds=TrueЗамените
<app-name>именем, которое вы использовали на предыдущем шаге.Задайте идентификатор клиента, который использует веб-приложение для извлечения из реестра контейнеров. Этот шаг не требуется, если вы используете управляемое удостоверение личности, назначаемое системой.
clientId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query clientId --output tsv) az resource update --ids $appConfig --set properties.AcrUserManagedIdentityID=$clientIdВключите CI/CD в App Service.
cicdUrl=$(az webapp deployment container config --enable-cd true --name <app-name> --resource-group msdocs-custom-container-tutorial --query CI_CD_URL --output tsv)CI_CD_URL— это URL-адрес, который Служба приложений создает автоматически. Ваш реестр должен использовать этот URL-адрес, чтобы уведомлять App Service о том, что произошла отправка образа в реестр. На самом деле это не создает для вас вебхук.Создайте вебхук в реестре контейнеров. Используйте CI_CD_URL, который вы получили на предыдущем шаге.
az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latestЧтобы проверить правильность настройки веб-перехватчика, отправьте ping веб-перехватчику и проверьте, получаете ли вы ответ 200 OK.
eventId=$(az acr webhook ping --name appserviceCD --registry <registry-name> --query id --output tsv) az acr webhook list-events --name appserviceCD --registry <registry-name> --query "[?id=='$eventId'].eventResponseMessage"Совет
Чтобы просмотреть все сведения обо всех событиях веб-перехватчика, удалите параметр
--query.Если вы просматриваете журнал контейнера в режиме реального времени, вы должны увидеть сообщение
Starting container for siteпосле пинга вебхука, так как вебхук вызывает перезапуск приложения.
Перейдите в веб-приложение
Чтобы протестировать приложение, перейдите на страницу https://<app-name>.azurewebsites.net. Замените <app-name> именем своего веб-приложения.
При первой попытке получить доступ к приложению может потребоваться некоторое время, так как Служба приложений должна извлечь весь образ из реестра. Если время ожидания браузера истечет, просто обновите страницу. После извлечения исходного образа Docker последующие тесты будут выполняться гораздо быстрее.
Открыть журналы диагностики
Пока вы ожидаете, пока App Service загрузит образ, будет полезно точно видеть, что делает App Service, организовав потоковую передачу журналов контейнера на ваш терминал.
Включите ведение журнала для контейнера.
az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystemВключите поток журналов.
az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorialЕсли журналы консоли не отображаются, проверьте еще раз через 30 секунд.
Вы также можете проверить файлы журналов из браузера, перейдя по адресу
https://<app-name>.scm.azurewebsites.net/api/logs/docker.Чтобы остановить потоковую передачу журналов в любое время, нажмите клавиши CTRL+C.
Измените код приложения и повторно разверните его
В этом разделе вы внесете изменения в код веб-приложения, перестроите образ и отправите его в реестр контейнеров. Затем Служба приложений автоматически извлечет обновленный образ из реестра и обновит работающее веб-приложение.
В локальной папке docker-django-webapp-linux откройте файл app/templates/app/index.html.
Измените первый элемент HTML в соответствии со следующим кодом.
<nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <a class="navbar-brand" href="#">Azure App Service - Updated Here!</a> </div> </div> </nav>Сохраните изменения.
Перейдите в папку docker-django-webapp-linux и перестройте образ:
docker build --tag appsvc-tutorial-custom-image .Обновите тег изображения на
latest:docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestЗамените
<registry-name>именем своего регистри.Отправьте образ в реестр:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestПо завершении отправки образа веб-перехватчик уведомляет App Service об отправке, и App Service пытается загрузить обновленный образ. Подождите несколько минут, а затем убедитесь, что обновление развернуто, перейдя в
https://<app-name>.azurewebsites.net.
Подключитесь к контейнеру с помощью SSH
Когда контейнер запущен, вы можете получить доступ к нему через Kudu-прокси App Service с проверкой подлинности, используя новый браузерный терминал или az webapp exec. Для этих опций не нужно устанавливать или запускать SSH-сервер в образе.
Сведения о предварительных требованиях для доступа и элементах управления приложением или слотом см. в статье Открыть оболочку контейнера (SSH) и выполнить команды.
Откройте SSH-подключение к контейнеру
Используйте Azure CLI 2.90.0 или более поздние версии и войдите в свой аккаунт Azure. Откройте интерактивную оболочку в вашем локальном терминале с помощью команды предпросмотра
az webapp exec:az webapp exec --resource-group msdocs-custom-container-tutorial --name <app-name>Изучите процессы, запущенные в приложении, используя
top, если он доступен в образе.
Для отдельного выполнения команд вместо интерактивной сессии см. Запуск команд без интерактивной сессии. Принятие запроса не подтверждает, что команда была успешно выполнена.
Очистить ресурсы
За использование ресурсов, созданных в этой статье, может взиматься плата. Чтобы очистить ресурсы, достаточно просто удалить группу ресурсов, которая их содержит.
az group delete --name msdocs-custom-container-tutorial
Следующие шаги
Чему вы научились:
- Отправьте пользовательский образ в частный реестр контейнеров.
- Разверните пользовательский образ в App Service.
- Обновите и повторно разверните образ.
- Откройте журналы диагностики.
- Подключитесь к контейнеру с помощью SSH.
- Запушьте пользовательский образ Docker в реестр контейнеров.
- Разверните пользовательский образ в App Service.
- Настройте переменные среды.
- Получите образ в App Service с помощью управляемого удостоверения.
- Откройте журналы диагностики.
- Включите CI/CD из реестра контейнеров в App Service.
- Подключитесь к контейнеру с помощью SSH.
Перейдите к следующему руководству:
Или ознакомьтесь с другими ресурсами: