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 nainstalovanou sadu Visual Studio 2022 s úlohou vývoje pro ASP.NET a web a vývoj pro Azure.

Pokud jste už nainstalovali Visual Studio:

  • Nejnovější aktualizace nainstalujte v sadě Visual Studio výběrem možnosti Vyhledat nápovědu>pro Aktualizace.
  • Výběrem nástrojů Získat nástroje>a funkce ověřte, že jsou nainstalované úlohy vývoje pro ASP.NET a web a vývoj pro Azure.

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 DotNetCoreSqlDb.sln řešení 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í, abyste localdb mohli aplikaci spustit a zachovat todos při práci místně.

  1. V Průzkumníku řešení sady Visual Studio klikněte pravým tlačítkem na uzel Připojení ed Services a vyberte Přidat > databázi SQL Serveru.
  2. V dialogovém okně Připojení závislostí vyberte SQL Server Express LocalDB (místní) a pak vyberte Další.
  3. V dialogovém okně Připojení sql Server Express LocalDB (Local) nastavte následující hodnoty:
    • název řetězce Připojení ion: Ponechte výchozí hodnotu.
    • hodnota řetězce Připojení: Ponechte výchozí hodnotu.
    • Uložte hodnotu připojovací řetězec do pole: Vyberte Žádné.
    • Vyberte Další.
  4. Na obrazovce Souhrn změn ponechte nastavení na výchozích hodnotách a vyberte Dokončit a dokončete pracovní postup.

Visual Studio zobrazí souhrn závislostí služby, včetně připojení k LocalDB.

A screenshot showing how to add a migration using Visual Studio.

V dalším kroku budete muset vytvořit počáteční migraci a použít ji k aktualizaci místní databáze se správným schématem aplikace todo.

  1. Vyberte ikonu ... napravo od seznamu závislostí služby vedle LocalDB připojení a zvolte Přidat migraci.
  2. V dialogovém okně Entity Framework Migrations počkejte chvíli, než Visual Studio vyhledá DbContext třídu, která je součástí projektu. Po načtení hodnot vyberte Dokončit.
  3. Visual Studio vygeneruje Migrations složku 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 LocalDB služby a vyberte Aktualizovat databázi.
  5. V dialogovém okně Migrace entity Framework počkejte chvíli, než Visual Studio znovu najde DbContext třídu 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 Pro spuštění DotNetCoreSqlDb v horní části sady Visual Studio.

Když se aplikace načte, 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.

Prozkoumání konfigurace spuštění aplikace

Ukázková aplikace obsahuje v Program.cs souboru následující kód:

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ě, localdb z souboru se načte appsettings.json připojovací řetězec a poskytne se do Entity Frameworku. Tato konfigurace umožňuje localdb , aby se připojovací řetězec zkontrolovali do správy zdrojového kódu, aby se ostatní vývojáři mohli během vývoje snadno připojit k místní databázi. Umožňuje také 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ězec 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í můžou zabránit v vrácení se změnami do správy zdrojového kódu nebo zahrnutí do konfiguračních souborů v produkčním zabezpečení připojovací řetězec.

Vytvoření služeb Azure

Aplikace bude vyžadovat vytvoření následujících služeb Azure pro úspěšné nasazení:

  • Kontejnerová aplikace: Vyžaduje se k hostování a spuštění nasazené aplikace.
  • Container Registry: Ukládá artefakt sestavené image kontejnerizované aplikace.
  • SQL Database: Databáze Azure SQL pro ukládání dat aplikace.

Funkce publikování sady Visual Studio můžou zpracovávat vytvář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 pak vyberte Další.

  4. Vytvořte novou aplikaci kontejneru, do které se má nasadit. Výběrem tlačítka + Vytvořit nový otevřete nové dialogové okno a zadejte následující hodnoty:

    A screenshot showing how to create a container app.

    • Název aplikace kontejneru: Ponechte výchozí hodnotu nebo zadejte název.
    • Název předplatného: Vyberte předplatné, do které se má nasadit.
    • Skupina prostředků: Vyberte Nový a vytvořte novou skupinu prostředků s názvem msdocs-app-db-ef.
    • Prostředí kontejnerových aplikací: Výběrem možnosti Nový otevřete dialogové okno prostředí kontejnerových aplikací a zadejte následující hodnoty:
      • Název prostředí: Ponechte výchozí hodnotu.
      • Umístění: Vyberte umístění blízko vás.
      • Pracovní prostor Služby Azure Log Analytics: Výběrem možnosti Nový otevřete dialogové okno pracovního prostoru služby 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 zavřete dialogové okno.
      • Výběrem tlačítka OK zavřete dialogové okno prostředí kontejnerových aplikací.
    • Výběrem možnosti Vytvořit zavřete původní dialogové okno aplikace kontejneru. Visual Studio vytvoří prostředek aplikace kontejneru v Azure.
  5. Po vytvoření prostředku se ujistěte, že je vybraný v seznamu aplikací kontejneru, a pak vyberte Další.

  6. K uložení publikovaného artefaktu image pro vaši aplikaci budete muset vytvořit službu Azure Container Registry. Na obrazovce registru kontejneru vyberte zelenou + ikonu.

    A screenshot showing how to create a new container registry.

  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 (vygeneruje soubor yml) a pak zvolte Dokončit. Pokud vás Visual Studio vyzve, abyste povolili uživateli Správa 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 GitHub Actions .yml , který můžete zobrazit kliknutím na tlačítko Upravit pracovní postup v souhrnném zobrazení profilu publikování. Tento soubor je podrobněji popsaný dále v článku.

Vytvoření databáze Azure SQL

  1. V Průzkumníku řešení klikněte pravým tlačítkem na uzel Připojení ed Services a vyberte Přidat > databázi SQL Serveru.
  2. V dialogovém okně Připojení závislostí vyberte Azure SQL Database a pak zvolte Další.
  3. Vyberte + Vytvořit nový 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 msdocs-app-db-ef skupinu vytvořenou dříve.
    • Databázový server: Vyberte Nový... a do nového automaticky otevíraných oken 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.
      • Správa ustrator uživatelské jméno: Zadejte hodnotu podle svého výběru.
      • Správa istrator password: Zadejte hodnotu podle svého výběru.
      • Správa istrator password (confirm): Zadejte stejné heslo, které chcete potvrdit. Výběrem možnosti OK zavřete dialogové okno SQL Serveru.
    • Výběrem možnosti 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řipojení do služby Azure SQL Database ponechte výchozí hodnoty, ale ujistěte se, žeje pro možnost Uložit hodnotu připojovací řetězec vybraná dole žádná.
  6. Vyberte Dokončit a Visual Studio vytvoří prostředky SQL.

Připojení kontejnerové aplikace do Azure SQL

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

  2. Vyberte + Vytvořit a vytvořte nové 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 databázi SQL.

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

      A screenshot showing how to use service connector.

  4. Vyberte Další: Ověřování a zadejte následující hodnoty:

    • Jako typ ověřování vyberte Připojení ionový ř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. Zbývající nastavení ponechte 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í Azure vyberte nastavení Vytvořit.

Po chvíli by se mělo zobrazit připojení k databázi SQL. Výběrem šipky rozbalíte připojení a zobrazí se AZURE_SQL_CONNECTIONSTRING hodnota. Tento název připojení odpovídá názvu proměnné prostředí připojovací řetězec definované 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í řetězec 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 z levé navigace Připojení ionové řetězce.

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

    A screenshot showing how to retrieve the connection string.

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

  5. Na kartě Nastavení vyberte v levém navigačním panelu akce tajné > kódy a pak zvolte Nový tajný klíč ú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í řetězec heslem, které jste zvolili při vytváření databáze.

    • Vyberte Add secret (Přidat tajný kód).

      A screenshot showing how to create a GitHub secret.

Připojovací řetězec je teď bezpečně uložená v tajných kódech ú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 .yml GitHub Actions vygenerovaný sadou Visual Studio výběrem tlačítka Upravit pracovní postup na stránce souhrnu publikování.

    A screenshot showing how to edit the workflow.

  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í. Když se pracovní postup spustí, kód také použije connection parametr příkazu k přepsání localdb připojovací řetězec uložené v appsettings.json souboru hodnotou přidanou do tajných database update kódů 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 aplikace a nasdílení změn do rozvětvované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 Akce . Spuštění pracovního postupu by se mělo aktivovat automaticky, pokud byla nabízená oznámení ú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.

    A screenshot showing the GitHub action workflow.

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 úkol, stejně jako jste to udělali místně. Adresu URL aplikace kontejneru najdete na stránce přehledu aplikace na webu Azure Portal.