Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описано, как развернуть приложение 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, выбрав Сервис>Получить средства и компоненты.
Предупреждение
В этой статье используются строки подключения. Используйте осторожность при управлении подключениями с помощью имен пользователей, паролей или ключей доступа. Эти секреты не следует сохранять в системе управления версиями или размещать в небезопасных местах, где доступ к ним могут получить посторонние. Во время локальной разработки вы обычно подключаетесь к локальной базе данных, которая не требует хранения секретов или подключения непосредственно к Azure. В процессе производства подключитесь к базе данных Azure SQL, используя подход без использования секретов, например, удостоверение Microsoft Entra, когда это возможно.
Установите пример приложения локально
Используйте пример приложения 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) задайте следующие значения:
- Имя строки подключения: Оставьте значение по умолчанию.
- Значение строки подключения: Оставьте значение по умолчанию.
- Сохраните строковое значение подключения в: Выберите "Нет".
- Нажмите кнопку "Далее"
- На экране "Сводка изменений" оставьте параметры по умолчанию и нажмите кнопку "Готово ", чтобы завершить рабочий процесс.
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
- В обозревателе решений щелкните правой кнопкой мыши узел "Подключенные службы" и выберите "Добавить > базу данных SQL Server".
- В диалоговом окне "Подключение к зависимости" выберите базу данных SQL Azure и нажмите кнопку "Далее".
- Нажмите кнопку "+ Создать" , чтобы добавить новую базу данных.
- В диалоговом окне "База данных SQL Azure" введите следующие значения:
- Имя базы данных: Оставьте значение по умолчанию.
- Имя подписки: Выберите ту же подписку, что и ранее.
-
Группа ресурсов: Выберите ту же группу, созданную
msdocs-app-db-ef
ранее. -
Сервер базы данных: Нажмите кнопку "Создать... и введите следующие значения в новом всплывающем элементе:
- Имя сервера базы данных: Введите уникальное имя сервера или добавьте случайные числа в конец автогенерированного имени.
- Местоположение: Выберите расположение, близкое к вам.
- Имя администратора: Введите любое значение.
- Пароль администратора: Введите любое значение по вашему выбору.
- Пароль администратора (подтверждение): Введите тот же пароль для подтверждения. Нажмите кнопку "ОК", чтобы закрыть диалоговое окно SQL Server
- Выберите "Создать", чтобы создать SQL Server и базу данных.
- После завершения операции выберите сервер из списка и нажмите кнопку "Далее"
- В диалоговом окне "Подключение к базе данных SQL Azure" оставьте значения по умолчанию, но убедитесь, что внизу для параметра "Сохранить значение строки подключения в" выбрано Нет.
- Выберите "Готово " и Visual Studio создаст ресурсы SQL.
Подключение приложения-контейнера к SQL Azure
На странице обзора созданного приложения-контейнера выберите соединитель службы (предварительная версия) в области навигации слева.
Нажмите кнопку +Создать , чтобы создать новое подключение.
В всплывающем элементе "Создание подключения" введите следующие значения:
Контейнер: Выберите созданный контейнер dotnetcoresqldb .
Тип службы: Выберите базу данных SQL.
Подписка: Выберите ту же подписку, которую вы использовали для создания приложения-контейнера.
Имя подключения: Оставьте значение по умолчанию.
SQL Server: Выберите созданный ранее сервер базы данных.
База данных SQL: Выберите созданную ранее базу данных.
Тип клиента: Выберите .NET.
Нажмите кнопку "Далее": проверка подлинности и ввод следующих значений:
- Выберите строку подключения для типа проверки подлинности.
- Имя пользователя: Введите имя пользователя, используемое при создании сервера базы данных.
- Пароль: Введите пароль, используемый при создании сервера базы данных.
Оставьте остальные параметры по умолчанию и нажмите кнопку "Далее: Сеть".
Оставьте значение по умолчанию выбранным и нажмите кнопку "Далее: проверка и создание".
После проверки параметров в Azure выберите Создать.
Через некоторое время должно появиться подключение к базе данных SQL. Щелкните стрелку, чтобы развернуть подключение и просмотреть значение AZURE_SQL_CONNECTIONSTRING . Это имя подключения соответствует имени строки подключения переменной среды, определенной в примере приложения.
Настройка рабочего процесса GitHub Actions
Файл рабочего процесса GitHub Actions, созданный Visual Studio, можно использовать GitHub для создания и развертывания приложения в Azure при отправке изменений. На данный момент этот процесс будет работать, но развернутое приложение вызовет исключение. Несмотря на создание базы данных SQL Azure, необходимо добавить шаг в рабочий процесс GitHub Actions для создания схемы. Строка подключения для базы данных SQL Azure может храниться безопасно в виде секрета в GitHub и извлекаться рабочим процессом при запуске.
Получите строку подключения и добавьте ее в секреты GitHub
На портале Azure найдите базу данных, созданную в главной строке поиска, и выберите ее из результатов.
На странице обзора базы данных выберите строки подключения в навигационной панели слева.
На вкладке 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.