Запуск пользовательского контейнера в Azure

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

В этом кратком руководстве показано, как развернуть приложение ASP.NET в образе Windows на сайте Docker Hub из Visual Studio. Приложение можно запустить в пользовательском контейнере в Службе приложений Azure.

Примечание

Контейнеры Windows доступны только для Файлов Azure и в настоящее время не поддерживают BLOB-объекты Azure.

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

Для работы с этим руководством сделайте следующее:

Создание веб-приложения ASP.NET

Создайте веб-приложение ASP.NET, сделав следующее:

  1. Откройте Visual Studio и выберите Создать проект.

  2. В окне Создание нового проекта найдите и выберите Веб-приложение ASP.NET (.NET Framework) для C#, а затем нажмите кнопку Далее.

  3. В окне Настроить новый проект присвойте приложению имя myfirstazurewebapp и щелкните Создать.

    Настройка проекта веб-приложения

  4. Вы можете развернуть любой тип веб-приложения ASP.NET в Azure. В рамках этого краткого руководства выберите шаблон MVC.

  5. Выберите Поддержка Docker и обязательно выберите Без проверки подлинности в параметрах проверки подлинности. Нажмите кнопку создания.

    Создание веб-приложения ASP.NET

  6. Если файл Dockerfile не открылся автоматически, откройте его в обозревателе решений.

  7. Вам потребуется поддерживаемый родительский образ. Измените родительский образ, заменив строку FROM приведенным ниже кодом. Затем сохраните файл.

    FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
    
  8. В меню Visual Studio выберите Отладка > Запустить без отладки, чтобы запустить приложение локально.

    Локальный запуск приложения

Публикация на сайте Docker Hub

  1. Щелкните правой кнопкой мыши проект myfirstazurewebapp в обозревателе решений и выберите Опубликовать.

  2. Выберите Служба приложений и щелкните Опубликовать.

  3. В разделе Выберите целевой объект публикации выберите Реестр контейнеров и Docker Hub, а затем нажмите кнопку Опубликовать.

    Публикация с помощью страницы обзора проекта

  4. Укажите данные для входа учетной записи Docker Hub и нажмите кнопку Сохранить.

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

    Снимок экрана: выделено имя репозитория.

  5. Скопируйте имя этого репозитория для последующего использования.

Создание приложения-контейнера Windows

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

  2. Выберите Создать ресурс в верхнем левом углу окна портала Azure.

  3. В разделе Популярные службы в подразделе Веб-приложение выберите Cоздать.

  4. В окне Создание веб-приложения выберите подписку и группу ресурсов. При необходимости можно создать новую группу ресурсов.

  5. Укажите имя приложения, например win-container-demo. Для параметра Публикация выберите вариант контейнер Docker, а для параметра Операционная система — значение Windows. По завершении выберите Next: Docker (Далее: Docker), чтобы продолжить.

    Создание Веб-приложения для контейнеров

  6. В поле Источник образа выберите Docker Hub, а для параметра Образ и тег введите имя репозитория, скопированное в разделе Публикация на сайте Docker Hub.

    Настройка Веб-приложения для контейнеров

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

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

Переход к контейнеру приложения

По завершении операции Azure отображается окно уведомления.

Развертывание выполнено

  1. Щелкните Перейти к ресурсу.

  2. В обзоре этого ресурса перейдите по ссылке рядом с URL-адресом.

В браузере откроется следующая страница:

Запуск приложения-контейнера Windows

Подождите несколько минут и повторите попытку, пока не отобразится домашняя страница ASP.NET по умолчанию.

Приложение-контейнер Windows работает

Поздравляем! Вы запустили свой первый пользовательский контейнер Windows в службе приложений Azure.

Просмотр журналов запуска контейнера

Загрузка контейнера Windows может занять некоторое время. Чтобы просмотреть ход выполнения, перейдите по следующему URL-адресу, заменив <app_name> именем приложения.

https://<app_name>.scm.azurewebsites.net/api/logstream

Потоковые журналы выглядят следующим образом:

2018-07-27T12:03:11  Welcome, you are now connected to log-streaming service.
27/07/2018 12:04:10.978 INFO - Site: win-container-demo - Start container succeeded. Container: facbf6cb214de86e58557a6d073396f640bbe2fdec88f8368695c8d1331fc94b
27/07/2018 12:04:16.767 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.017 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.020 INFO - Site: win-container-demo - Container started successfully

Обновление на локальном компьютере и повторное развертывание

  1. В Visual Studio в обозревателе решений откройте Представления > Главная страница > Index.cshtml.

  2. Найдите тег HTML <div class="jumbotron"> в верхней области и замените его следующим кодом:

    <div class="jumbotron">
        <h1>ASP.NET in Azure!</h1>
        <p class="lead">This is a simple app that we've built that demonstrates how to deploy a .NET app to Azure App Service.</p>
    </div>
    
  3. Чтобы выполнить повторное развертывание в Azure, щелкните правой кнопкой мыши проект myfirstazurewebapp в обозревателе решений и выберите Опубликовать.

  4. На странице публикации выберите Опубликовать и дождитесь завершения публикации.

  5. Чтобы указать службе приложений извлечь новый образ из Docker Hub, перезапустите приложение. На странице приложения на портале щелкните Перезапустить > Да.

    Перезапуск веб-приложения в Azure

Еще раз перейдите к контейнерному приложению. После обновления веб-страницы сначала должна появиться страница "Starting up" (Запуск) приложения, а через несколько минут должна отобразиться обновленная веб-страница.

Обновленное веб-приложение в Azure

Дальнейшие действия

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

Служба приложений в Linux предоставляет предопределенные стеки приложений на платформе Linux с поддержкой определенных языков (например, .NET, PHP, Node.js и т. д.). Вы также можете использовать пользовательский образ Docker для запуска веб-приложения в стеке приложений, который еще не определен в Azure. В этом кратком руководстве показано, как развернуть образ из Реестра контейнеров Azure (ACR) в Службе приложений.

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

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

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

Создайте реестр контейнеров с помощью инструкций из краткого руководства по созданию частного реестра контейнеров с помощью портала Microsoft Azure.

Важно!

При создании реестра контейнеров Azure не забудьте установить для параметра Администратор значение Включить. Его также можно установить из раздела Ключи доступа на странице реестра на портале Azure. Этот параметр необходим для доступа к Службе приложений.

Войти

  1. Запустите Visual Studio Code.

  2. Выберите логотип Azure на панели действий, перейдите в обозреватель СЛУЖБЫ ПРИЛОЖЕНИЙ, а затем выберите Войти в Azure и следуйте инструкциям.

    Вход в Azure

  3. Убедитесь, что в строке состояния внизу указан ваш адрес электронной почты учетной записи Azure. В обозревателе СЛУЖБЫ ПРИЛОЖЕНИЙ должна отобразиться подписка.

  4. На панели действий выберите логотип Docker. Убедитесь, что в обозревателе РЕЕСТРОВ отображается созданный реестр контейнеров.

    Снимок экрана: раздел "Реестры" с развернутым пунктом Azure.

Проверка предварительных требований

Убедитесь, что у вас установлен и работает Docker. Следующая команда отобразит версию Docker, если она выполняется.

docker --version

Создание и сборка образа

  1. В Visual Studio Code откройте пустую папку и добавьте файл Dockerfile. В Dockerfile вставьте содержимое в зависимости от требуемой языковой платформы:
FROM mcr.microsoft.com/appsvc/dotnetcore:lts

ENV PORT 8080
EXPOSE 8080

ENV ASPNETCORE_URLS "http://*:${PORT}"

ENTRYPOINT ["dotnet", "/defaulthome/hostingstart/hostingstart.dll"]

В этом файле Dockerfile родительский образ является одним из встроенных контейнеров .NET Службы приложений Azure. Исходные файлы для него можно найти в репозитории Azure-App-Service/ImageBuilder на GitHub в разделе GenerateDockerFiles/dotnetcore. Соответствующий Dockerfile копирует простое приложение .NET в /defaulthome/hostingstart. Ваш Dockerfile просто запускает это приложение.

  1. Откройте палитру команди введите Образы Docker: сборка образа. Нажмите клавишу Ввод, чтобы выполнить эту команду.

  2. В поле тега образа укажите нужный тег в следующем формате: <acr-name>.azurecr.io/<image-name>/<tag>, где <acr-name> — это имя созданного вами реестра контейнеров. Нажмите клавишу ВВОД.

  3. Когда сборка образа завершится, щелкните Обновить в верхней части обозревателя ОБРАЗОВ и убедитесь, что образ успешно создан.

    Снимок экрана: созданный образ с тегом.

Развертывание в реестре контейнеров

  1. На панели действий щелкните значок Docker. В обозревателе ОБРАЗОВ найдите только что созданный образ.

  2. Разверните образ, щелкните правой кнопкой мыши нужный тег и выберите Отправить.

  3. Убедитесь, что тег образа начинается с <acr-name>.azurecr.io, и нажмите клавишу Ввод.

  4. Когда Visual Studio Code закончит передачу образа в реестр контейнеров, щелкните Обновить в верхней части обозревателя РЕЕСТРОВ и убедитесь, что образ успешно отправлен.

    Снимок экрана: образ, развернутый в реестре контейнеров Azure.

Развертывание в Службе приложений

  1. В обозревателе РЕЕСТРОВ разверните образ, щелкните его правой кнопкой мыши и выберите Развернуть образ в Службе приложений Azure.
  2. Следуя инструкциям на экране, выберите подписку, глобально уникальное имя приложения, группу ресурсов и план Службы приложений. Выберите ценовую категорию B1 Basic (B1 Базовый) и регион.

После развертывания приложение будет доступно по адресу http://<app-name>.azurewebsites.net.

Группа ресурсов — это именованная коллекция всех ресурсов вашего приложения в Azure. Например, группа ресурсов может содержать ссылку на веб-сайт, базу данных и функцию Azure.

План Службы приложений определяет физические ресурсы, которые будут использоваться для размещения веб-сайта. В этом кратком руководстве используется план размещения Базовый в инфраструктуре Linux. Это означает, что сайт будет размещаться на компьютере Linux вместе с другими веб-сайтами. Если начать работу с планом Базовый, можно использовать портал Azure для увеличения масштаба, чтобы ваш сайт был единственным на компьютере. Сведения о ценах см на странице цен на Службу приложений.

Обзор веб-сайта

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

Дальнейшие действия

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

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

Другие расширения Azure: