Sdílet prostřednictvím


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ě.

  1. 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.
  2. V dialogovém okně Připojit k závislosti vyberte SQL Server Express LocalDB (místní), a poté zvolte Další.
  3. 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ší
  4. 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.

snímek obrazovky znázorňující, jak přidat migraci pomocí sady Visual Studio

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.

  1. Vyberte ikonu ... napravo od seznamu závislostí služby vedle připojení LocalDB a zvolte Přidatmigrace .
  2. 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.
  3. 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.
  4. Znovu vyberte ikonu ... vedle služby LocalDB a vyberte Aktualizovat databázi.
  5. 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 na LocalDB 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 souboru appsettings.json a předá se Entity Frameworku. Tato konfigurace umožňuje uložení připojovacího řetězce localdb 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

  1. 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.

  2. V dialogovém okně publikování vyberte Azure jako cíl nasazení a pak vyberte Další.

  3. Pro konkrétní cíl vyberte Azure Container Apps (Linux)a potom zvolte Další.

  4. 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:

    snímek obrazovky znázorňující, jak vytvořit aplikaci typu kontejner.

    • 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.
  5. Jakmile bude prostředek vytvořen, ujistěte se, že je vybrán v seznamu aplikací kontejneru, a pak vyberte Další.

  6. 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 +.

    snímek obrazovky znázorňující, jak vytvořit nový registr kontejneru

  7. Ponechte výchozí hodnoty a pak vyberte Vytvořit.

  8. Po vytvoření registru kontejneru se ujistěte, že je vybraný, a pak vyberte další.

  9. 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

  1. 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.
  2. V dialogovém okně Připojit se k závislosti vyberte Azure SQL Database a pak zvolte Další.
  3. Vyberte + Vytvořit novou a přidejte novou databázi.
  4. 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ší
  5. 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é.
  6. Vyberte Dokončit a Visual Studio vytvoří prostředky SQL.

Připojení kontejnerové aplikace k Azure SQL

  1. Na stránce přehledu aplikace kontejneru, kterou jste vytvořili, vyberte Service Connector (Preview) v levém navigačním panelu.

  2. Vyberte možnost a poté možnost k vytvoření nového připojení.

  3. 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 .

      snímek obrazovky znázorňující, jak používat konektor služby

  4. 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.
  5. Ponechte zbývající nastavení ve výchozím nastavení a vyberte Další: Sítě.

  6. Ponechte vybranou výchozí hodnotu a zvolte Další: Zkontrolovat a vytvořit.

  7. 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

  1. Na webu Azure Portal vyhledejte databázi, kterou jste vytvořili na hlavním panelu hledání, a vyberte ji z výsledků.

  2. Na stránce přehledu databáze vyberte Připojovací řetězce z levého navigačního panelu.

  3. Na kartě ADO.NET zkopírujte připojovací řetězec z pole formuláře.

    snímek obrazovky znázorňující, jak získat připojovací řetězec

  4. Přejděte do forknutého úložiště GitHub aplikace.

  5. 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ě.

  6. Na stránce Nový tajný kód zadejte následující hodnoty:

    • Název : Zadejte název DbConnection.

    • tajný kód : Vložte připojovací řetězec zkopírovaný z Azure. Nezapomeňte nahradit zástupný symbol hesla v připojovacím řetězci heslem, které jste zvolili při vytváření databáze.

    • Vyberte Přidat tajný kód.

      snímek obrazovky znázorňující, jak vytvořit tajný kód GitHubu

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í

  1. 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í.

    snímek obrazovky znázorňující, jak upravit pracovní postup

  2. 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říkazu database update k přepsání připojovacího řetězce localdb uloženého v souboru appsettings.json hodnotou přidanou do tajemství GitHubu.

Spuštění pracovního postupu GitHub Actions a otestování nasazení

  1. 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
    
  2. 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é.

  3. 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.

    snímek obrazovky znázorňující pracovní postup akce GitHubu

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.