paint-brush
Как развернуть веб-приложение ASP.NET Core в Azure из образа Dockerк@igorlopushko
880 чтения
880 чтения

Как развернуть веб-приложение ASP.NET Core в Azure из образа Docker

к Igor Lopushko6m2024/01/19
Read on Terminal Reader

Слишком долго; Читать

В этой статье я дам подробное руководство о том, как создать простое веб-приложение ASP.NET Core, создать образ докера с вашим приложением и самый простой способ его развертывания в Azure. В итоге вы будете хорошо понимать, как развернуть свое веб-приложение и сделать его доступным для всего мира.
featured image - Как развернуть веб-приложение ASP.NET Core в Azure из образа Docker
Igor Lopushko HackerNoon profile picture

Введение

Как веб-разработчики, мы привыкли находить подходящий хостинг для наших приложений со всеми сложностями их развертывания и обслуживания. Но сейчас мы живем в новую эпоху, когда поставщики облачных услуг могут сделать для нас многое практически бесплатно. Что касается разработчиков .NET, Microsoft Azure выглядит наиболее естественным выбором для размещения веб-приложений.


Docker — это еще одна технология, которая позволяет абстрагироваться от платформы и среды, в которой вы запускаете свое приложение.


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

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

Для разработки этой статьи я собираюсь использовать JetBrains Rider. Но вы можете использовать любой инструмент, какой захотите.


Сначала вам нужно создать новый проект. Давайте назовем это простым « веб-приложением ».

Создать новое решение


После создания нового проекта он должен выглядеть так:

Структура проекта


2. Создайте образ Docker.

Без каких-либо изменений в проекте мы сосредоточимся на Dockerfile . Измените его, как показано в следующем примере:

 FROM mcr.microsoft.com/dotnet/aspnet:6.0 as base WORKDIR /app EXPOSE 8080 ENV ASPNETCORE_URLS http://+:8080 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build COPY . /src WORKDIR /src RUN dotnet build "webapp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "webapp.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "webapp.dll"]


Вам необходимо обратить внимание на строки EXPOSE 8080 и ENV ASPNETCORE_URLS http://+:8080 , чтобы иметь возможность подключаться по HTTP к докер-контейнеру.


Создайте образ докера из командной строки. Вам нужно перейти в каталог проекта webapp и выполнить следующую команду:

 DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --tag drmoz/webapp:latest .


Я запускаю его на Mac M1, и мне нужно явно указать параметр --platform , чтобы обеспечить совместимость с развертыванием Azure. Мне также нужно активировать Docker Buildkit, указав параметр DOCKER_BUILDKIT=1 и используя buildx , чтобы иметь возможность создать образ для другой архитектуры.


Если вы используете его на платформе Intel x86/x64, вы можете использовать команду docker build без необходимости указывать параметр --platform и активировать buildx .


Вы можете пометить свое изображение по-другому, но поскольку я собираюсь использовать Docker Hub, мне нужно указать имя своей учетной записи: drmoz как часть тега изображения drmoz/webapp:latest .


Когда образ создан, вы можете проверить, присутствует ли он в Docker, выполнив следующую команду:

 docker images


Оно должно быть в списке:

 REPOSITORY TAG IMAGE ID CREATED SIZE drmoz/webapp latest 0cfac748256b 37 minutes ago 216MB


Давайте запустим Docker-контейнер, чтобы убедиться, что вновь созданный образ работает нормально. Выполните команду docker run , чтобы запустить контейнер:

 docker run -p 5555:8080 drmoz/webapp:latest


Укажите параметр -p , чтобы сопоставить порт 8080 внутри контейнера с портом 5555 вашего локального компьютера. Также укажите имя образа для создания контейнера. В моем случае это drmoz/webapp:latest .


Теперь вы можете перейти по адресу http://localhost:5555 в своем браузере, чтобы увидеть домашнюю страницу веб-приложения ASP.NET Core.

Веб-приложение ASP.NET Core: домашняя страница



Нам нужно отправить образ в Docker Hub . Перед этим вы должны зарегистрироваться в реестре Docker и создать репозиторий. Нажмите кнопку « Создать репозиторий » в правом углу главной страницы.

Новый репозиторий Docker Hub


Укажите поле Repository Name и оставьте видимость репозитория Public .


В командной строке вам необходимо войти в реестр Docker Hub:

 docker login


После этого вы сможете отправить вновь созданный образ в реестр:

 docker push drmoz/webapp:latest


Перейдите в репозиторий, и вы увидите информацию об образе:

Репозиторий Docker Hub


3. Создайте веб-приложение в Azure.

Теперь мы готовы развернуть наше веб-приложение ASP.NET Core в Azure. Давайте войдем на портал Azure и создадим новую группу ресурсов. Укажите имя группы ресурсов как « webapp-rg » и нажмите кнопку «Просмотреть + создать».


Создать группу ресурсов: вкладка «Основные»


На следующем экране просто нажмите кнопку «Создать».

Создать группу ресурсов: просмотр + вкладка «Создать»


Теперь мы можем создать веб-приложение. Перейдите на страницу «Создать ресурс» и найдите WebApp. Нажмите кнопку «Создать».

Создать веб-приложение: вкладка «Основные»

Вам необходимо указать Resource Group , которую мы создали ранее. Также укажите уникальное Name для веб-приложения. Выберите «Docker-контейнер» в поле Publish . Позже мы сможем указать, какой образ Docker использовать.


В разделе Pricing plans выберите любые подходящие варианты, но для тестовых целей я рекомендую использовать покрышку Free F1 . Перейдите на вкладку Docker.


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


На этой вкладке выберите «Docker Hub» в поле Image Source . Выберите «Общедоступный» в поле Access Type », укажите Image and tag с именем изображения, которое мы отправили в Docker Hub. Перейдите на вкладку «Просмотр + создание». На этой вкладке нажмите кнопку «Создать»:

Создание веб-приложения: вкладка «Просмотр + создание»


Когда новый ресурс будет развернут, вас спросят, хотите ли вы перейти к этому ресурсу; просто сделай это. Вы сможете увидеть информацию о веб-приложении.

Информация о ресурсах веб-приложения


Нажмите кнопку «Обзор», чтобы открыть развернутое веб-приложение. Если все прошло правильно, вы должны увидеть домашнюю страницу веб-приложения ASP.NET Core, аналогичную той, которую вы видели в своем браузере, перейдя по адресу http://localhost:5555 .

Включить непрерывное развертывание

Если вы перейдете к настройкам «Центр развертывания» и включите «Продолжение развертывания», вы сможете повторно развертывать свой образ каждый раз, когда вы отправляете новый в Docker Hub. Таким образом, вы можете внести изменения в свой код, отправить его в Docker Hub с новым образом и увидеть изменения за считанные минуты в Azure.

Веб-приложение — Центр развертывания

Устранение неполадок веб-приложения Azure

Чтобы иметь возможность просматривать журналы развертывания и выявлять проблемы, вам необходимо включить сохранение журналов в файловую систему в главе «Журналы службы приложений» следующим образом:

Веб-приложение — журналы службы приложений


Когда это будет сделано, вы можете перейти в «Центр развертывания» и просмотреть журналы следующим образом:

Веб-приложение — Центр развертывания


Краткое содержание

Если вы достигли этой точки, вам удалось создать веб-приложение ASP.NET Core; упакуйте его в образ Docker и разверните в Azure. Сегодня технологии облегчают жизнь и ускоряют процесс разработки. Вы увидите, насколько легко вы можете развернуть свое приложение у поставщика облачных услуг и предоставить его всему миру, выполнить некоторое тестирование и увидеть результат своей работы.


Теперь вы можете подробно изучить облачные провайдеры Azure, воспользовавшись документацией Microsoft. Также ознакомьтесь с документацией Docker для более глубокого понимания этой технологии. Я надеюсь, что это может быть полезно.