Руководство. Развертывание приложения ASP.NET Core и базы данных в приложениях контейнеров Azure с помощью GitHub Actions
В этом руководстве описано, как развернуть приложение ASP.NET Core и База данных SQL в приложениях контейнеров Azure с помощью Visual Studio и GitHub Actions. Вы также узнаете, как управлять миграцией Entity Framework и обновлениями базы данных в GitHub Actions, хотя основные понятия также можно применять к другим средствам и средам CI/CD.
Необходимые компоненты
Вам потребуется установить Visual Studio 2022 с помощью ASP.NET и веб-разработки и рабочей нагрузки разработки Azure.
Если вы уже установили Visual Studio:
- Установите последние обновления для Visual Studio, выбрав Справка>Проверить обновления.
- Убедитесь, что установлены ASP.NET и веб-разработки, а также рабочие нагрузки разработки Azure, выбрав "Сервис>получения средств и компонентов".
Настройка примера приложения локально
Используйте пример приложения ToDo, чтобы следовать вместе с этим руководством. Чтобы клонировать приложение из GitHub, выполните следующую команду.
git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore
Перейдите в папку DotNetCoreSqlDb.sln
проекта и откройте решение в Visual Studio.
Приложение ToDo готово к работе, но вам потребуется установить подключение к localdb
СЕРВЕРУ SQL Server, доступному в Visual Studio. Подключение, чтобы localdb
позволить запускать приложение и сохранять додосы во время локальной работы.
- Щелкните правой кнопкой мыши узел Подключение служб в обозревателе решений Visual Studio и выберите "Добавить > базу данных SQL Server".
- В диалоговом окне Подключение зависимостей выберите SQL Server Express LocalDB (Local) и нажмите кнопку "Далее".
- В диалоговом окне Подключение sql Server Express LocalDB (Local) задайте следующие значения:
- имя строки Подключение ion: оставьте значение по умолчанию.
- строковое значение Подключение ion: оставьте значение по умолчанию.
- Сохраните значение строка подключения в: выберите "Нет".
- Выберите Далее
- На экране "Сводка изменений" оставьте параметры по умолчанию и нажмите кнопку "Готово", чтобы завершить рабочий процесс.
Visual Studio отображает сводку по зависимостям службы, включая подключение к LocalDB
.
Затем необходимо создать начальную миграцию и использовать ее для обновления локальной базы данных с правильной схемой для приложения todo.
- Щелкните значок ...справа от списка зависимостей службы рядом с подключением
LocalDB
и нажмите кнопку "Добавить миграцию". - В диалоговом окне "Миграция Entity Framework" подождите, пока Visual Studio найдите
DbContext
класс, включенный в проект. После загрузки значений нажмите кнопку Готово. - Visual Studio создает
Migrations
папку в проекте и создает начальный класс миграции. Этот класс можно использовать для обновления базы данных с правильной схемой. - Щелкните значок ...рядом со службой
LocalDB
и нажмите кнопку "Обновить базу данных". - В диалоговом окне "Миграция Entity Framework" подождите, пока Visual Studio снова найдите
DbContext
класс, а затем нажмите кнопку "Готово". Visual Studio запускает миграцию и создает схему для базы данных на сервереLocalDB
.
Запустите проект, нажав кнопку запуска DotNetCoreSqlDb в верхней части Visual Studio.
Когда приложение загружается, убедитесь, что база данных работает правильно, введя новый todo. Todo отображается в представлении основного списка на домашней странице приложения.
Изучение конфигурации запуска приложения
Пример приложения содержит следующий код в Program.cs
файле:
if(builder.Environment.IsDevelopment())
{
builder.Services.AddDbContext<MyDatabaseContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
}
else
{
builder.Services.AddDbContext<MyDatabaseContext>(options =>
options.UseSqlServer(Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")));
}
Этот код применяет следующие конфигурации:
- При локальном
localdb
запуске приложения строка подключения извлекается изappsettings.json
файла и предоставляется Entity Framework. Эта конфигурация позволяетlocaldb
строка подключения проверка в управление версиями, чтобы другие разработчики могли легко подключаться к локальной базе данных во время разработки. Она также позволяет выполнять миграцию Entity Framework локально. По умолчанию Entity Framework не обнаруживает строка подключения, хранящихся в переменной среды при выполнении миграций. - Когда приложение выполняется в рабочих процессах GitHub Actions или в рабочей среде, строка подключения извлекается из переменных среды. Переменные среды могут предотвратить проверка рабочих безопасных строка подключения в систему управления версиями или включаться в файлы конфигурации.
Создание служб Azure
Приложению потребуется создать следующие службы Azure для успешного развертывания:
- Приложение-контейнер: требуется для размещения и запуска развернутого приложения.
- Реестр контейнеров: хранит встроенный артефакт образа контейнерного приложения.
- База данных SQL. База данных SQL Azure для хранения данных приложения.
Функции публикации Visual Studio могут обрабатывать создание этих ресурсов.
Создание приложения контейнера Azure и Реестр контейнеров Azure
В обозревателе решений Visual Studio щелкните правой кнопкой мыши узел проекта верхнего уровня и выберите "Опубликовать".
В диалоговом окне публикации выберите Azure в качестве цели развертывания, а затем нажмите кнопку Далее.
В качестве целевой платформы выберите Контейнеры приложений Azure (Linux) и нажмите кнопку Далее.
Создайте новое приложение-контейнер для развертывания. Нажмите кнопку +Создать, чтобы открыть новое диалоговое окно и введите следующие значения:
- Имя приложения-контейнера: оставьте значение по умолчанию или введите имя.
- Имя подписки: выберите подписку для развертывания.
- Группа ресурсов: выберите "Создать " и создайте новую группу ресурсов с именем msdocs-app-db-ef.
- Среда приложений контейнеров: выберите "Создать ", чтобы открыть диалоговое окно среды приложений контейнеров и введите следующие значения:
- Имя приложения: оставьте значение по умолчанию.
- Расположение: выберите ближайшее расположение.
- Рабочая область Azure Log Analytics: выберите Создать, чтобы открыть диалоговое окно рабочей области Log Analytics.
- Имя: оставьте значение по умолчанию.
- Расположение: выберите ближайшее расположение и нажмите кнопку ОК, чтобы закрыть диалоговое окно.
- Нажмите кнопку ОК, чтобы закрыть диалоговое окно среды приложений-контейнеров.
- Нажмите кнопку Создать, чтобы закрыть исходное диалоговое окно приложений-контейнеров. Visual Studio создает ресурс приложения-контейнера в Azure.
После создания ресурса убедитесь в том, что он выбран в списке приложений-контейнеров, а затем нажмите кнопку Далее.
Вам потребуется создать Реестр контейнеров Azure для хранения опубликованного артефакта образа для приложения. Щелкните зеленый значок + на экране реестра контейнеров.
Оставьте значения по умолчанию и нажмите кнопку Создать.
После создания реестра контейнеров убедитесь, что он выбран, а затем нажмите кнопку "Далее".
На экране типа развертывания выберите CI/CD с помощью рабочих процессов GitHub Actions (создает файл yml) и нажмите кнопку Готово. Если в Visual Studio появляется запрос на то, чтобы разрешить администратору доступ к опубликованному контейнеру Docker, выберите Да.
Visual Studio создает и отображает профиль публикации. Большинство шагов публикации и подробностей описаны в файле GitHub Actions .yml
, который можно просмотреть, нажав кнопку "Изменить рабочий процесс " в представлении сводки профиля публикации. Этот файл подробно рассматривается далее в статье.
Создание базы данных SQL Azure
- В обозревателе решений щелкните правой кнопкой мыши узел Подключение ed Services и выберите "Добавить > базу данных SQL Server".
- В диалоговом окне Подключение зависимостей выберите База данных SQL Azure и нажмите кнопку "Далее".
- Нажмите кнопку "+ Создать" , чтобы добавить новую базу данных.
- В диалоговом окне База данных SQL Azure введите следующие значения:
- Имя базы данных: оставьте значение по умолчанию.
- Имя подписки: выберите ту же подписку, что и ранее.
- Группа ресурсов: выберите ту же группу, созданную
msdocs-app-db-ef
ранее. - Сервер базы данных: нажмите кнопку "Создать" и введите следующие значения в новом всплывающем итоге:
- Имя сервера базы данных: введите уникальное имя сервера или добавьте случайные числа в конец автогенерированного имени.
- Расположение. Выберите близкое к вам расположение.
- имя пользователя Администратор istrator: введите значение выбранного значения.
- Администратор istrator password: введите значение выбранного параметра.
- пароль Администратор istrator (подтверждение): введите тот же пароль для подтверждения. Нажмите кнопку "ОК", чтобы закрыть диалоговое окно SQL Server
- Выберите "Создать", чтобы создать SQL Server и базу данных.
- После завершения операции выберите сервер из списка и нажмите кнопку "Далее"
- В диалоговом окне Подключение База данных SQL Azure оставьте значения по умолчанию, но убедитесь, что none выбран в нижней части значения "Сохранить строка подключения" в параметре.
- Выберите " Готово " и Visual Studio создаст ресурсы SQL.
Подключение приложение контейнера в SQL Azure
На странице обзора созданного приложения-контейнера выберите службу Подключение or (предварительная версия) в области навигации слева.
Нажмите кнопку +Создать , чтобы создать новое подключение.
В всплывающем элементе "Создание подключения" введите следующие значения:
Контейнер. Выберите созданный контейнер dotnetcoresqldb .
Тип службы: выберите База данных SQL.
Подписка. Выберите ту же подписку, которую вы использовали для создания приложения-контейнера.
Имя подключения: оставьте значение по умолчанию.
SQL Server: выберите сервер базы данных, созданный ранее.
База данных SQL: выберите созданную ранее базу данных.
Тип клиента: выберите .NET.
Нажмите кнопку "Далее": проверка подлинности и ввод следующих значений:
- Выберите строку Подключение ion для типа проверки подлинности.
- Имя пользователя: введите имя пользователя, используемое при создании сервера базы данных.
- Пароль. Введите пароль, используемый при создании сервера базы данных.
Оставьте остальные параметры по умолчанию и нажмите кнопку "Далее: Сеть".
Оставьте значение по умолчанию выбранным и нажмите кнопку "Далее: проверка и создание".
После проверки Azure нажмите кнопку "Создать".
Через некоторое время должно появиться подключение к базе данных SQL. Щелкните стрелку, чтобы развернуть подключение и просмотреть значение AZURE_SQL_CONNECTIONSTRING . Это имя подключения соответствует имени переменной среды строка подключения, определенной в примере приложения.
Настройка рабочего процесса GitHub Actions
Файл рабочего процесса GitHub Actions, созданный Visual Studio, можно использовать GitHub для создания и развертывания приложения в Azure при отправке изменений. В настоящее время этот процесс будет работать, но развернутое приложение вызовет исключение. Несмотря на создание базы данных SQL Azure, необходимо добавить шаг в рабочий процесс GitHub Actions для создания схемы. Строка подключения для базы данных SQL Azure можно безопасно хранить в качестве секрета в GitHub и получать рабочим процессом при запуске.
Получение строка подключения и добавление его в секреты GitHub
В портал Azure найдите базу данных, созданную в главной строке поиска, и выберите ее из результатов.
На странице обзора базы данных выберите строки Подключение ion в области навигации слева.
На вкладке ADO.NET скопируйте строка подключения из поля формы.
Перейдите в вилку репозитория GitHub приложения.
На вкладке Параметры выберите "Действия секретов>" в области навигации слева и выберите новый секрет репозитория.
На странице "Создать секрет" введите следующие значения:
Теперь строка подключения безопасно хранятся в секретах репозитория GitHub и могут быть получены с помощью рабочего процесса GitHub.
Изменение рабочего процесса GitHub Actions для включения миграций
Откройте файл рабочего процесса
.yml
GitHub Actions, созданный Visual Studio, нажав кнопку "Изменить рабочий процесс " на странице сводки публикации.Добавьте следующий yaml в конец файла рабочего процесса:
- name: Run EF run: | dotnet tool install --global dotnet-ef dotnet tool restore dotnet ef database update -p DotNetCoreSqlDb --connection '${{ secrets.DBConnection }}'
Этот код устанавливает средства командной строки платформы сущностей и запускает миграцию приложений. При выполнении рабочего процесса код также использует
connection
параметрdatabase update
команды для переопределенияlocaldb
строка подключения, хранящегося вappsettings.json
файле со значением, добавленным в секреты GitHub.
Запустите рабочий процесс GitHub Actions и протестируйте развертывание
Зафиксируйте изменения в приложении и отправьте в вилку репозитория с помощью следующей команды:
git add --all git commit -m "Added GitHub Actions workflow" git push
Перейдите к репозиторию GitHub и перейдите на вкладку "Действия ". Запуск рабочего процесса должен активироваться автоматически, если отправка выполнена успешно.
Выберите активный рабочий процесс, чтобы просмотреть сведения о журнале для каждого шага по завершении. Миграция выполняется последней, чтобы обновить базу данных в Azure.
После завершения рабочего процесса приложение развертывается в приложениях контейнеров Azure и подключается к базе данных с обновленной схемой.
Вы можете протестировать развертывание, перейдя на домашнюю страницу приложения-контейнера и создав тодо, как и вы сделали локально. Url-адрес приложения контейнера можно найти на странице обзора приложения в портал Azure.