Перенос пользовательского программного обеспечения в Службу приложений Azure с помощью собственного контейнера

Служба приложений Azure предоставляет стандартные стеки приложений, например ASP.NET или Node.js в Windows. Эти стеки приложений работают под управлением IIS. Предварительно настроенная среда Windows защищает операционную систему от следующего:

  • Административный доступ.
  • Установки программного обеспечения
  • изменения в глобальном кэше сборок.

Дополнительные сведения см. в разделе Функциональность операционной системы в App Service.

Вы можете развернуть специально настроенный образ Windows из Visual Studio, чтобы внести в ОС изменения, необходимые для вашего приложения. Это упрощает перенос локального приложения, требующего настраиваемой конфигурации ОС и программного обеспечения. В этом руководстве показано, как перенести в App Service приложение ASP.NET, которое использует пользовательские шрифты, установленные в библиотеке шрифтов Windows. Вы развертываете настраиваемый образ Windows из Visual Studio в Реестр контейнеров Azure, а затем запускаете его в App Service.

Снимок экрана: веб-приложение, работающее в контейнере Windows.

Предварительные требования

Настройте приложение локально

Скачать пример

На этом шаге вы настроите локальный проект .NET.

Пример проекта содержит простое приложение 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 (Поддержка оркестрации контейнеров).

Снимок экрана: проект CustomFontSample в обозревателе решений. Выделены пункты меню

Выберите 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 и выберите "Опубликовать".

Снимок экрана: проект CustomFontSample в обозревателе решений. Выделен элемент меню

Создайте и опубликуйте реестр

  1. В окне Publish выберите Azure, а затем нажмите кнопку "Далее".

  2. Выберите Реестр контейнеров Azure, а затем нажмите Далее.

  3. Выберите подписку, в которой нужно опубликовать реестр, а затем нажмите кнопку "Создать".

Снимок экрана: окно публикации. Выделена кнопка

Вход с помощью учетной записи Azure

В окне реестра контейнеров Azure выберите "Добавить учетную запись", а затем войдите в подписку Azure. Если вы уже выполнили вход, выберите учетную запись, содержащую нужную подписку из раскрывающегося списка.

Настройте реестр

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

Настройка Предлагаемое значение
Префикс DNS Оставьте созданное имя записи реестра или измените его, указав другое уникальное имя.
Группа ресурсов Нажмите кнопку "Создать", введите myResourceGroup и нажмите кнопку "ОК".
SKU Базовый. Дополнительные сведения см. в разделе Ценовые категории.
Расположение реестра Западная Европа

Снимок экрана Реестр контейнеров Azure.

Нажмите Готово.

Откроется окно терминала, и отобразится ход развертывания образа. Дождитесь завершения развертывания.

Вход в Azure

Войдите на портал Azure.

Создать веб-приложение

Выберите Создать ресурс, а затем выберите Создать в разделе Веб-приложение.

Настройте основные сведения о приложении

На вкладке Основы настройте параметры с помощью следующей таблицы в качестве руководства.

Настройка Предлагаемое значение
Подписка Убедитесь, что отображается правильная подписка.
Группа ресурсов Нажмите кнопку "Создать новый", введите myResourceGroup и нажмите "ОК".
Имя Введите уникальное имя. URL-адрес веб-приложения: https://<app-name>.azurewebsites.net, где <app-name> — имя вашего приложения.
Опубликовать Контейнер
Операционная система Windows
Регион Западная Европа
План Windows Нажмите кнопку "Создать новый", введите myAppServicePlan и нажмите "ОК".

Вкладка "Основные сведения" должна выглядеть примерно так:

Снимок экрана: вкладка

Настройте контейнер Windows

На вкладке Контейнер настройте пользовательский контейнер Windows, как показано в следующей таблице, а затем выберите Проверить и создать

Настройка Предлагаемое значение
Источник изображения Реестр контейнеров Azure
Реестр Выберите созданный ранее реестр.
Изображение customfontsample
Тег последний

Завершить создание приложения

Нажмите Создать и подождите, пока Azure создаст необходимые ресурсы.

Перейдите в веб-приложение

По завершении развертывания появится сообщение уведомления:

Снимок экрана, на котором показано сообщение уведомления.

  1. Выберите Перейти к ресурсу.

  2. На странице приложения щелкните ссылку под 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, последняя версия уже установлена.

  • Установите 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, если вы еще не авторизовались.

  1. Запустите следующую команду, чтобы собрать образ:

    docker build --tag appsvc-tutorial-custom-image .
    
  2. Убедитесь, что сборка работает, запустив контейнер 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.

  3. Перейдите по адресу http://localhost:8000, чтобы проверить правильность работы веб-приложения и контейнера.

    Снимок экрана результатов тестирования.

Создание управляемой идентичности, назначаемой пользователем

App Service может использовать либо управляемый идентификатор по умолчанию, либо управляемый идентификатор, назначаемый пользователем, для проверки подлинности в реестре контейнеров. В этом руководстве вы будете использовать управляемую идентификацию, назначаемую пользователем.

  1. Выполните команду az group create, чтобы создать группу ресурсов.

    az group create --name msdocs-custom-container-tutorial --location westeurope
    

    Вы можете изменить значение --location, чтобы указать близкий к вам регион.

  2. Создайте управляемую идентичность в группе ресурсов:

    az identity create --name myID --resource-group msdocs-custom-container-tutorial
    

Создание реестра контейнеров

  1. Создайте реестр контейнеров с помощью следующей 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 позволяет отправлять образы в реестр с помощью учетных данных администратора.

  2. Получите учетные данные администратора, выполнив az credential acr show команду:

    az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>
    

    Выходные данные этой команды содержат два пароля и имя пользователя для реестра в формате JSON.

Отправьте пример образа в Container Registry

В этом разделе описано, как отправить образ в реестр контейнеров, который позже используется App Service.

  1. В локальном терминале, где вы создали образ примера, используйте docker login команду для входа в реестр контейнеров:

    docker login <registry-name>.azurecr.io --username <registry-username>
    

    Замените <registry-name> и <registry-username> значениями из предыдущих шагов. При появлении запроса введите один из паролей из предыдущего раздела.

    Используйте то же имя реестра во всех остальных шагах этого раздела.

  2. После успешного входа присвойте локальному образу Docker тег реестра:

    docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  3. С помощью команды docker push отправьте образ в реестр.

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

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

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

Авторизуйте управляемую идентичность для реестра

Созданная управляемая идентификация еще не имеет разрешения на извлечение из реестра контейнеров. На этом шаге вы настроите авторизацию.

  1. Получите идентификатор участника-службы для управляемого идентификатора:

    principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)
    
  2. Получите идентификатор ресурса для реестра контейнеров:

    registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)
    
  3. Предоставьте управляемому удостоверению разрешение на доступ к реестру контейнеров.

    az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"
    

    Дополнительные сведения об этих разрешениях см. в статье "Что такое управление доступом на основе ролей Azure?".

Создать веб-приложение

  1. Создайте план службы приложений с помощью az appservice plan create команды:

    az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linux
    

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

  2. Создайте веб-приложение командой 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 для веб-запросов.
  • Настройте приложение, чтобы использовать управляемую идентичность для получения образов из реестра контейнеров.
  • Настройте непрерывное развертывание из реестра контейнеров. (Каждая отправка образа в реестр запустит скачивание нового образа вашим приложением.) Этот шаг не требуется для настройки веб-приложения на скачивание из реестра контейнеров, но он может уведомить веб-приложение о отправке нового образа в реестр. Если этот шаг не выполнен, необходимо вручную активировать загрузку образа, перезагрузив веб-приложение.
  1. Используйте 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> именем, которое вы использовали на предыдущем шаге.

  2. Включите управляемое удостоверение, назначаемое пользователем, в веб-приложении с помощью команды 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> значением, которое вы использовали на предыдущем шаге.

  3. Настройте приложение для извлечения из 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> именем, которое вы использовали на предыдущем шаге.

  4. Задайте идентификатор клиента, который использует веб-приложение для извлечения из реестра контейнеров. Этот шаг не требуется, если вы используете управляемое удостоверение личности, назначаемое системой.

    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
    
  5. Включите 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 о том, что произошла отправка образа в реестр. На самом деле это не создает для вас вебхук.

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

    az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latest
    
  7. Чтобы проверить правильность настройки веб-перехватчика, отправьте 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, организовав потоковую передачу журналов контейнера на ваш терминал.

  1. Включите ведение журнала для контейнера.

    az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystem
    
  2. Включите поток журналов.

    az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorial
    

    Если журналы консоли не отображаются, проверьте еще раз через 30 секунд.

    Вы также можете проверить файлы журналов из браузера, перейдя по адресу https://<app-name>.scm.azurewebsites.net/api/logs/docker.

  3. Чтобы остановить потоковую передачу журналов в любое время, нажмите клавиши CTRL+C.

Измените код приложения и повторно разверните его

В этом разделе вы внесете изменения в код веб-приложения, перестроите образ и отправите его в реестр контейнеров. Затем Служба приложений автоматически извлечет обновленный образ из реестра и обновит работающее веб-приложение.

  1. В локальной папке docker-django-webapp-linux откройте файл app/templates/app/index.html.

  2. Измените первый элемент 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>
    
  3. Сохраните изменения.

  4. Перейдите в папку docker-django-webapp-linux и перестройте образ:

    docker build --tag appsvc-tutorial-custom-image .
    
  5. Обновите тег изображения на latest:

    docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    Замените <registry-name> именем своего регистри.

  6. Отправьте образ в реестр:

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  7. По завершении отправки образа веб-перехватчик уведомляет App Service об отправке, и App Service пытается загрузить обновленный образ. Подождите несколько минут, а затем убедитесь, что обновление развернуто, перейдя в https://<app-name>.azurewebsites.net.

Подключитесь к контейнеру с помощью SSH

Когда контейнер запущен, вы можете получить доступ к нему через Kudu-прокси App Service с проверкой подлинности, используя новый браузерный терминал или az webapp exec. Для этих опций не нужно устанавливать или запускать SSH-сервер в образе.

Сведения о предварительных требованиях для доступа и элементах управления приложением или слотом см. в статье Открыть оболочку контейнера (SSH) и выполнить команды.

Откройте SSH-подключение к контейнеру

  1. Используйте Azure CLI 2.90.0 или более поздние версии и войдите в свой аккаунт Azure. Откройте интерактивную оболочку в вашем локальном терминале с помощью команды предпросмотра az webapp exec :

    az webapp exec --resource-group msdocs-custom-container-tutorial --name <app-name>
    
  2. Изучите процессы, запущенные в приложении, используя top, если он доступен в образе.

Для отдельного выполнения команд вместо интерактивной сессии см. Запуск команд без интерактивной сессии. Принятие запроса не подтверждает, что команда была успешно выполнена.

Очистить ресурсы

За использование ресурсов, созданных в этой статье, может взиматься плата. Чтобы очистить ресурсы, достаточно просто удалить группу ресурсов, которая их содержит.

az group delete --name msdocs-custom-container-tutorial

Следующие шаги

Чему вы научились:

  • Отправьте пользовательский образ в частный реестр контейнеров.
  • Разверните пользовательский образ в App Service.
  • Обновите и повторно разверните образ.
  • Откройте журналы диагностики.
  • Подключитесь к контейнеру с помощью SSH.
  • Запушьте пользовательский образ Docker в реестр контейнеров.
  • Разверните пользовательский образ в App Service.
  • Настройте переменные среды.
  • Получите образ в App Service с помощью управляемого удостоверения.
  • Откройте журналы диагностики.
  • Включите CI/CD из реестра контейнеров в App Service.
  • Подключитесь к контейнеру с помощью SSH.

Перейдите к следующему руководству:

Или ознакомьтесь с другими ресурсами: