Dela via


Självstudie: Lär dig översiktsbegrepp för att distribuera en Python webbapp på Azure Container Apps

Den här självstudieserien visar hur du containeriserar en Python webbapp och distribuerar den till Azure Container Apps. En exempelwebbapp är containerbaserad och Docker-avbildningen lagras i Azure Container Registry. Azure Container Apps har konfigurerats för att hämta Docker-avbildningen från Container Registry och skapa en container. Exempelappen ansluter till Azure Database for PostgreSQL för att demonstrera kommunikationen mellan Container Apps och andra Azure resurser.

Det finns flera alternativ för att skapa och distribuera molnbaserade och containerbaserade Python webbappar på Azure. Den här självstudieserien beskriver Azure Container Apps. Container Apps är bra för att köra allmänna containrar, särskilt för program som omfattar många mikrotjänster som distribueras i containrar.

I den här självstudieserien skapar du en container. Om du vill distribuera en Python webbapp som en container till Azure App Service kan du läsa Containerized Python webbapp på Azure med MongoDB.

Procedurerna i den här självstudieserien hjälper dig att utföra följande uppgifter:

  • Skapa en Docker avbildning från en Python webbapp och lagra avbildningen i Azure Container Registry.
  • Konfigurera Azure Container Apps som värd för Docker-avbildningen.
  • Konfigurera GitHub Actions för att uppdatera containern med en ny Docker-avbildning som utlöses av ändringar i din GitHub lagringsplats. Det här steget är valfritt.
  • Konfigurera kontinuerlig integrering (CI) och kontinuerlig leverans (CD) av en Python-webbapp till Azure.

I den här första delen av serien lär du dig grundläggande begrepp för att distribuera en Python webbapp på Azure Container Apps.

Tjänstöversikt

Följande diagram visar hur du använder din lokala miljö, GitHub lagringsplatser och Azure tjänster i den här självstudieserien.

Diagram över miljöer och tjänster för distribution av en Python webbapp på Azure Container Apps.

Diagrammet innehåller följande komponenter:

  • Azure Container Apps:

    Azure Container Apps gör att du kan köra mikrotjänster och containerbaserade program på en serverlös plattform. En serverlös plattform innebär att du får fördelarna med att köra containrar med minimal konfiguration. Med Azure Container Apps kan dina program skalas dynamiskt baserat på egenskaper som HTTP-trafik, händelsedriven bearbetning eller PROCESSOR- eller minnesbelastning.

    Container Apps hämtar Docker-avbildningar från Azure Container Registry. Ändringar i containeravbildningar utlöser en uppdatering av den distribuerade containern. Du kan också konfigurera GitHub Actions för att utlösa uppdateringar.

  • Azure Container Registry:

    Azure Container Registry möjliggör att du kan arbeta med Docker-bilder i Azure. Eftersom Container Registry ligger nära dina distributioner i Azure har du kontroll över åtkomsten. Du kan använda dina Microsoft Entra grupper och behörigheter för att styra åtkomsten till Docker-avbildningar.

    I den här självstudieserien är registerkällan Azure Container Registry. Men du kan också använda Docker Hub eller ett privat register med mindre ändringar.

  • Azure Database for PostgreSQL:

    Exempelkoden lagrar programdata i en PostgreSQL-databas. Containerappen ansluter till PostgreSQL med hjälp av en användartilldelad hanterad identitet. Anslutningsinformation lagras i miljövariabler som konfigureras explicit eller via en Azure tjänstanslutning.

  • GitHub:

    Exempelkoden för den här självstudieserien finns i en GitHub lagringsplats som du förgrenar och klonar lokalt. Om du vill konfigurera ett CI/CD-arbetsflöde med GitHub Actions behöver du ett GitHub konto.

    Du kan fortfarande följa med i den här självstudieserien utan ett GitHub konto, om du arbetar lokalt eller i Azure Cloud Shell för att skapa containeravbildningen från lagringsplatsen för exempelkoden.

Revisioner och CI/CD

Om du vill göra kodändringar och push-överföra dem till en container skapar du en ny Docker-avbildning med dina ändringar. Sedan överför du avbilden till Containerregistret och skapar en ny version av containerappen.

För att automatisera den här processen visar ett valfritt steg i självstudieserien hur du skapar en CI/CD-pipeline med hjälp av GitHub Actions. Pipelinen bygger och distribuerar automatiskt din kod till Container Apps varje gång ett nytt commit skickas till ditt GitHub-repositorium.

Autentisering och säkerhet

I den här självstudieserien skapar du en Docker-containeravbildning direkt i Azure och distribuerar den till Azure Container Apps. Container Apps körs i kontexten för en environment, som stöds av ett Azure virtuellt nätverk. Virtuella nätverk är en grundläggande byggsten för ditt privata nätverk i Azure. Med Container Apps kan du exponera din containerapp för den offentliga webben genom att aktivera ingress.

Du konfigurerar CI/CD genom att auktorisera Azure Container Apps som en OAuth-app för ditt GitHub-konto. Som en OAuth-app skriver Container Apps en GitHub Actions arbetsflödesfil till lagringsplatsen med information om Azure resurser och jobb för att uppdatera dem. Arbetsflödet uppdaterar Azure-resurser genom att använda autentiseringsuppgifterna för ett Microsoft Entra tjänstehuvudnamn (eller ett befintligt) med rollbaserad åtkomst för Container Apps samt ett användarnamn och lösenord för åtkomst till Azure Container Registry. Autentiseringsuppgifter lagras på ett säkert sätt i din GitHub lagringsplats.

Slutligen lagrar exempelwebbappen i den här självstudieserien data i en PostgreSQL-databas. Exempelkoden ansluter till PostgreSQL via en connection string. När appen körs i Azure ansluts den till PostgreSQL-databasen med hjälp av en användartilldelad hanterad identitet. Koden använder DefaultAzureCredential för att dynamiskt uppdatera lösenordet i connection string med en Microsoft Entra åtkomsttoken under körningen. Den här mekanismen förhindrar behovet av att hårdkoda lösenordet i connection string eller en miljövariabel och ger ett extra säkerhetslager.

Självstudieserien vägleder dig genom att skapa den hanterade identiteten och ge den en lämplig PostgreSQL-roll och behörigheter så att den kan komma åt och uppdatera databasen. Under konfigurationen av Container Apps vägleder självstudieserien dig genom att konfigurera den hanterade identiteten i appen och konfigurera miljövariabler som innehåller anslutningsinformation för databasen. Du kan också använda en Azure-tjänstanslutning för att utföra samma sak.

Förutsättningar

För att slutföra den här självstudieserien behöver du:

  • Ett Azure konto där du kan skapa:

    • En instans av Azure Container Registry.
    • En Azure Container Apps miljö.
    • En instans av Azure Database for PostgreSQL.
  • Visual Studio Code eller Azure CLI beroende på vilket verktyg du använder:

  • Python paket:

Exempelapp

Exempelappen Python är en restauranggransknings-app som sparar restaurang- och granskningsdata i PostgreSQL. I slutet av självstudieserien har du en restauranggranskningsapp distribuerad och körs i Azure Container Apps som ser ut som följande skärmbild.

Skärmbild av exempelappen som skapats från en Python containerbaserad webbapp.

Nästa steg