Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 i 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. Information om hur du distribuerar en Python-webbapp som en container till Azure App Service finns i Containerized Python-webbapp i 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 GitHub-lagringsplatsen. Det här steget är valfritt.
- Konfigurera kontinuerlig integrering och kontinuerlig leverans (CI/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 i 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.
Diagrammet innehåller följande komponenter:
-
Med Azure Container Apps kan du 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 CPU- 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.
-
Med Azure Container Registry kan du arbeta med Docker-avbildningar 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.
-
Exempelkoden för den här självstudieserien finns på en GitHub-lagringsplats som du förgrenar och klonar lokalt. Om du vill konfigurera ett CI/CD-arbetsflöde med GitHub Actionsbehö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. När en ny commit skickas till ditt GitHub-repository bygger och distribuerar pipen automatiskt din kod till Container Apps.
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 miljö, som stöds av ett virtuellt Azure-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.
Om du vill konfigurera CI/CD auktoriserar du 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 med hjälp av autentiseringsuppgifterna för ett Microsoft Entra-tjänsthuvudnamn (eller ett befintligt) med rollbaserad åtkomst för Container Apps och ett användarnamn och lösenord för Azure Container Registry. Autentiseringsuppgifter lagras säkert på din GitHub-lagringsplats.
Slutligen lagrar exempelwebbappen i den här självstudieserien data i en PostgreSQL-databas. Exempelkoden ansluter till PostgreSQL via en anslutningssträng. När appen körs i Azure ansluter 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 anslutningssträngen med en Microsoft Entra-åtkomsttoken under körningen. Den här mekanismen förhindrar behovet av att hårdkoda lösenordet i anslutningssträngen 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:
- Ett exemplar 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:
- För Visual Studio Code behöver du Container Apps-tillägget.
- Du kan använda Azure CLI via Azure Cloud Shell.
Python-paket:
- pyscopg2-binary för anslutning till PostgreSQL.
- Flask eller Django som ett webbramverk.
Exempelapp
Python-exempelappen är en recensionsapp som sparar restaurang- och recensionsdata 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.