Kurz: Nasazení aplikace ASP.NET Core a databáze do azure Container Apps pomocí GitHub Actions
V tomto kurzu se dozvíte, jak nasadit aplikaci ASP.NET Core a SQL Database do Azure Container Apps pomocí sady Visual Studio a GitHub Actions. Dozvíte se také, jak spravovat migrace entity Framework a aktualizace databází v GitHub Actions, i když se tyto koncepty dají použít i v jiných nástrojích a prostředích CI/CD.
Požadavky
Potřebujete sadu Visual Studio 2022 nainstalovanou s vývojem pro ASP.NET a web a úlohu vývojových Azure.
Pokud jste už nainstalovali Visual Studio:
- Nainstalujte nejnovější aktualizace v sadě Visual Studio tak, že vyberete Nápověda>Zkontrolovat aktualizace.
- Ověřte, že jsou nainstalované úlohy ASP.NET a vývoje webu a vývoje Azure, výběrem Nástrojů a poté možnosti Získat nástroje a funkce>.
Místní nastavení ukázkové aplikace
Pomocí ukázkové aplikace TODO můžete postupovat podle tohoto kurzu. Naklonujte aplikaci z GitHubu pomocí následujícího příkazu:
git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore
Přejděte do složky projektu a otevřete řešení DotNetCoreSqlDb.sln
v sadě Visual Studio.
Aplikace TODO je připravená, ale budete muset navázat připojení k localdb
SQL Serveru, který je k dispozici v sadě Visual Studio. Připojení k localdb
vám umožní spustit aplikaci a uložit úkoly při práci lokálně.
- V Průzkumníku řešení sady Visual Studio klikněte pravým tlačítkem myši na uzel Připojené služby a vyberte Přidat > databázi SQL Serveru.
- V dialogovém okně Připojit k závislosti vyberte SQL Server Express LocalDB (místní), a poté zvolte Další.
- V dialogovém okně Connect to SQL Server Express LocalDB (Local) nastavte následující hodnoty:
- Název připojovacího řetězce: Ponechte výchozí hodnotu.
- Hodnota připojovacího řetězce: Ponechte výchozí hodnotu.
- Uložit hodnotu připojovacího řetězce v: Vyberte Žádné.
- Výběr Další
- Na obrazovce Souhrn změn ponechte nastavení na výchozích hodnotách a vyberte Dokončit, abyste dokončili pracovní postup.
Visual Studio zobrazí souhrn závislostí služby, včetně připojení k LocalDB
.
Dále budete muset vytvořit počáteční migraci a použít ji k aktualizaci místní databáze správným schématem aplikace TODO.
- Vyberte ikonu ... napravo od seznamu závislostí služby vedle připojení
LocalDB
a zvolte Přidatmigrace . - V dialogovém okně Migrace entity Framework chvíli počkejte, až Visual Studio vyhledá třídu
DbContext
, která je součástí projektu. Po načtení hodnot vyberte Dokončit. - Visual Studio vygeneruje složku
Migrations
v projektu a vytvoří počáteční třídu migrace. Tuto třídu lze použít k aktualizaci databáze se správným schématem. - Znovu vyberte ikonu ... vedle služby
LocalDB
a vyberte Aktualizovat databázi. - V dialogovém okně Migrace Entity Framework chvíli počkejte, až Visual Studio znovu najde třídu
DbContext
a pak zvolte Dokončit. Visual Studio spustí migraci a vytvoří schéma pro databázi naLocalDB
serveru.
Spusťte projekt výběrem tlačítka DotNetCoreSqlDb spustit v horní části sady Visual Studio.
Po načtení aplikace ověřte, že databáze funguje správně zadáním nového seznamu úkolů. Úkol se zobrazí v hlavním zobrazení seznamu na domovské stránce aplikace.
Prozkoumejte konfiguraci spuštění aplikace
Ukázková aplikace obsahuje následující kód v souboru 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")));
}
Tento kód používá následující konfigurace:
- Když se aplikace spustí místně, připojovací řetězec
localdb
se načte ze souboruappsettings.json
a předá se Entity Frameworku. Tato konfigurace umožňuje uložení připojovacího řetězcelocaldb
do verzovacího systému, aby se ostatní vývojáři mohli během vývoje snadno připojit k místní databázi. Také umožňuje místně spouštět migrace Entity Framework. Ve výchozím nastavení Entity Framework při spouštění migrací nezjišťuje připojovací řetězce uložené v proměnné prostředí. - Když aplikace běží v pracovních postupech GitHub Actions nebo v produkčním prostředí, připojovací řetězec se načte z proměnných prostředí. Proměnné prostředí mohou zabránit tomu, aby byly zabezpečené produkční připojovací řetězce zapsány do správy zdrojového kódu nebo aby byly zahrnuty do konfiguračních souborů.
Vytvoření služeb Azure
Aplikace bude vyžadovat vytvoření následujících služeb Azure pro úspěšné nasazení:
- Container App: Vyžaduje se k hostování a spuštění nasazené aplikace.
- Container Registry: Ukládá sestavený artefakt image kontejnerizované aplikace.
- SQL Database: Azure SQL databáze pro ukládání dat aplikace.
Funkce publikování sady Visual Studio mohou zařídit vytvoření těchto prostředků za vás.
Vytvoření aplikace kontejneru Azure a služby Azure Container Registry
V Průzkumníku řešení sady Visual Studio klikněte pravým tlačítkem myši na uzel projektu nejvyšší úrovně a vyberte Publikovat.
V dialogovém okně publikování vyberte Azure jako cíl nasazení a pak vyberte Další.
Pro konkrétní cíl vyberte Azure Container Apps (Linux)a potom zvolte Další.
Vytvořte novou kontejnerovou aplikaci pro nasazení. Výběrem tlačítka + Vytvořit nový otevřete nové dialogové okno a zadejte následující hodnoty:
- název aplikace kontejneru: Ponechte výchozí hodnotu nebo zadejte název.
- Název předplatného: Vyberte předplatné, do kterého se má nasadit.
- skupina prostředků : Vyberte Nový a vytvořte novou skupinu prostředků nazvanou msdocs-app-db-ef.
-
prostředí kontejnerových aplikací: Vyberte Nový pro otevření dialogového okna prostředí kontejnerových aplikací a zadejte následující hodnoty:
- Název prostředí: Zachovat výchozí hodnotu.
- Umístění: Vyberte umístění blízko vás.
-
Pracovní prostor Azure Log Analytics: Výběrem možnosti Nový otevřete dialogové okno pracovního prostoru Log Analytics.
- název : Ponechte výchozí hodnotu.
- Umístění: Vyberte umístění blízko vás a potom kliknutím na OK dialogové okno zavřete.
- Výběrem OK zavřete dialogové okno prostředí kontejnerových aplikací.
- Výběrem možnosti Vytvořit zavřete dialogové okno původní aplikace kontejneru. Visual Studio vytvoří prostředek kontejnerové aplikace v Azure.
Jakmile bude prostředek vytvořen, ujistěte se, že je vybrán v seznamu aplikací kontejneru, a pak vyberte Další.
K uložení publikovaného artefaktu image pro vaši aplikaci budete muset vytvořit registr kontejneru Azure. Na obrazovce Container Registry vyberte zelenou ikonu +.
Ponechte výchozí hodnoty a pak vyberte Vytvořit.
Po vytvoření registru kontejneru se ujistěte, že je vybraný, a pak vyberte další.
Na obrazovce Typ nasazení vyberte CI/CD pomocí pracovních postupů GitHub Actions (generuje soubor yml) a pak zvolte Dokončit. Pokud vás Visual Studio vyzve, abyste uživateli správce povolili přístup k publikovanému kontejneru Dockeru, vyberte Ano.
Visual Studio vytvoří a zobrazí profil publikování. Většina kroků publikování a podrobností je popsaná v souboru .yml
GitHub Actions, který můžete zobrazit kliknutím na tlačítko Upravit pracovní postup v zobrazení souhrnu profilu publikování. Tento soubor je podrobněji popsaný dále v článku.
Vytvoření služby Azure SQL Database
- V Průzkumníku řešení klikněte pravým tlačítkem na uzel Připojené služby a vyberte Přidat > Databázi SQL Server.
- V dialogovém okně Připojit se k závislosti vyberte Azure SQL Database a pak zvolte Další.
- Vyberte + Vytvořit novou a přidejte novou databázi.
- V dialogovém okně Azure SQL Database zadejte následující hodnoty:
- Název databáze: Ponechte výchozí hodnotu.
- Název předplatného: Vyberte stejné předplatné jako dříve.
-
skupina prostředků: Vyberte stejnou skupinu
msdocs-app-db-ef
vytvořenou dříve. -
Databázový server: Vyberte Nový... a do nového vyskakovacího okna zadejte následující hodnoty:
- Název databázového serveru: Zadejte jedinečný název serveru nebo připojte náhodná čísla na konec automaticky vygenerovaného názvu.
- Umístění: Vyberte umístění, které je blízko vás.
- uživatelské jméno správce: Zadejte hodnotu podle svého výběru.
- heslo správce: Zadejte hodnotu podle svého výběru.
- heslo správce (potvrzení): Zadejte stejné heslo, které chcete potvrdit. Výběrem OK zavřete dialogové okno SQL Serveru
- Kliknutím na Vytvořit vytvořte SQL Server a databázi.
- Po dokončení operace vyberte ze seznamu server a zvolte Další
- V dialogovém okně Připojit ke službě Azure SQL Database ponechte výchozí hodnoty, ale ujistěte se, že v dolní části je v možnosti Uložit připojovací řetězec v vybraná volba Žádné.
- Vyberte Dokončit a Visual Studio vytvoří prostředky SQL.
Připojení kontejnerové aplikace k Azure SQL
Na stránce přehledu aplikace kontejneru, kterou jste vytvořili, vyberte Service Connector (Preview) v levém navigačním panelu.
Vyberte možnost a poté možnost k vytvoření nového připojení.
V informačním rámečku Vytvořit připojení zadejte následující hodnoty:
kontejner : Vyberte kontejner dotnetcoresqldb, který jste vytvořili.
Typ služby : Vyberte SQL Database.
Předplatné: Vyberte stejné předplatné, které jste použili k vytvoření aplikace kontejneru.
Název připojení: Ponechte výchozí hodnotu.
SQL Server: Vyberte databázový server, který jste vytvořili dříve.
databáze SQL: Vyberte databázi, kterou jste vytvořili dříve.
typ klienta : Vyberte .NET .
Vyberte Další: Ověřování a zadejte následující hodnoty:
- Jako typ ověřování zvolte Připojovací řetězec.
- Uživatelské jméno: Zadejte uživatelské jméno, které jste použili při vytváření databázového serveru.
- Heslo: Zadejte heslo, které jste použili při vytváření databázového serveru.
Ponechte zbývající nastavení ve výchozím nastavení a vyberte Další: Sítě.
Ponechte vybranou výchozí hodnotu a zvolte Další: Zkontrolovat a vytvořit.
Po ověření Azurem zvolte nastavení a vyberte Vytvořit.
Po chvíli by se mělo zobrazit připojení k databázi SQL. Vyberte šipku, rozklikněte připojení a zobrazte hodnotu AZURE_SQL_CONNECTIONSTRING. Tento název připojení odpovídá názvu připojovacího řetězce proměnné prostředí definovaného v ukázkové aplikaci.
Konfigurace pracovního postupu GitHub Actions
Soubor pracovního postupu GitHub Actions vygenerovaný sadou Visual Studio může GitHub použít k sestavení a nasazení aplikace do Azure při nasdílení změn. V současné době by tento proces fungoval, ale nasazená aplikace vyvolá výjimku. I když byla vytvořena databáze Azure SQL, je potřeba přidat krok do pracovního postupu GitHub Actions, aby se schéma vygenerovalo. Připojovací řetězec pro databázi Azure SQL je možné bezpečně uložit jako tajný kód na GitHubu a načíst ho při spuštění pracovního postupu.
Načtení připojovacího řetězce a jeho přidání do tajných kódů GitHubu
Na webu Azure Portal vyhledejte databázi, kterou jste vytvořili na hlavním panelu hledání, a vyberte ji z výsledků.
Na stránce přehledu databáze vyberte Připojovací řetězce z levého navigačního panelu.
Na kartě ADO.NET zkopírujte připojovací řetězec z pole formuláře.
Přejděte do forknutého úložiště GitHub aplikace.
Na kartě nastavení vyberte Tajné kódy > Akce z levého navigačního panelu a pak zvolte Nový tajný kód úložiště.
Na stránce Nový tajný kód zadejte následující hodnoty:
Připojovací řetězec je teď bezpečně uložený v tajných klíčích úložiště GitHub a dá se načíst pomocí pracovního postupu GitHubu.
Úprava pracovního postupu GitHub Actions pro povolení migrací
Otevřete soubor pracovního postupu GitHub Actions
.yml
vygenerovaný sadou Visual Studio výběrem tlačítka Upravit pracovní postup na stránce souhrnu publikování.Na konec souboru pracovního postupu připojte následující yaml:
- name: Run EF run: | dotnet tool install --global dotnet-ef dotnet tool restore dotnet ef database update -p DotNetCoreSqlDb --connection '${{ secrets.DBConnection }}'
Tento kód nainstaluje nástroje příkazového řádku entity Framework a spustí migrace aplikací. Při spuštění pracovního postupu kód také používá parametr
connection
příkazudatabase update
k přepsání připojovacího řetězcelocaldb
uloženého v souboruappsettings.json
hodnotou přidanou do tajemství GitHubu.
Spuštění pracovního postupu GitHub Actions a otestování nasazení
Pomocí následujícího příkazu potvrďte změny v aplikaci a pushněte je do rozvětveného úložiště:
git add --all git commit -m "Added GitHub Actions workflow" git push
Přejděte do úložiště GitHub a vyberte kartu Actions. Spuštění pracovního postupu by se mělo spustit automaticky, pokud bylo odeslání úspěšné.
Výběrem aktivního pracovního postupu zobrazíte podrobnosti protokolu pro každý krok po dokončení. Migrace se spustí naposledy, aby se databáze aktualizovala v Azure.
Po dokončení pracovního postupu se aplikace nasadí do Azure Container Apps a připojí se k databázi s aktualizovaným schématem.
Nasazení můžete otestovat tak, že přejdete na domovskou stránku aplikace kontejneru a vytvoříte todo, stejně jako jste to udělali místně. Adresu URL aplikace kontejneru najdete na stránce přehledu aplikace na webu Azure Portal.