Översikt: Distribuera en Python-webbapp i Azure Container Apps

Den här självstudien visar hur du containeriserar en Python-webbapp och distribuerar den till Azure Container Apps. En exempelwebbapp kommer att containeriseras 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 en 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älvstudien beskriver Azure Container Apps. Container Apps är bra för att köra containrar för generell användning, särskilt för program som omfattar många mikrotjänster som distribueras i containrar. I den här självstudien skapar du en container. Information om hur du distribuerar en Python-webbapp som en container till Azure App Service finns i Containeriserad Python-webbapp i App Service.

I den här självstudien ska du:

Efter den här självstudien konfigureras du för kontinuerlig integrering (CI) och kontinuerlig distribution (CD) av en Python-webbapp till Azure.

Tjänsteöversikt

Tjänstdiagrammet som stöder den här självstudien visar hur din lokala miljö, GitHub-lagringsplatser och Azure-tjänster används i självstudien.

A screenshot of the environments and services used in the Tutorial - Deploy a Python App on Azure Container Apps.

De komponenter som stöder den här självstudien och som visas i diagrammet ovan är:

  • Azure Container Apps

    • 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.
  • Azure Container Registry

    • 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, vilket gör det möjligt att använda dina Microsoft Entra-grupper och behörigheter för att styra åtkomsten till Docker-avbildningar.
    • I den här självstudien ä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 via miljövariabler som konfigurerats explicit eller med Azure Service-Anslut eller.
  • GitHub

    • Exempelkoden för den här självstudien finns på 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älvstudien utan ett GitHub-konto och arbeta lokalt eller i Azure Cloud Shell för att skapa containeravbildningen från exempelkodlagringsplatsen.

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 din ändring. Sedan skickar du avbildningen till Container Registry och skapar en ny revision av containerappen.

För att automatisera den här processen visar ett valfritt steg i självstudien hur du skapar en CI/CD-pipeline (kontinuerlig integrering och kontinuerlig leverans) med GitHub Actions. Pipelinen skapar och distribuerar automatiskt din kod till containerappen när en ny incheckning skickas till din GitHub-lagringsplats.

Autentisering och säkerhet

I den här självstudien 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 (VNet). 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 kontinuerlig integrering och kontinuerlig leverans (CI/CD) auktoriserar du Azure Container Apps som en OAuth-app för ditt GitHub-konto. Som 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 autentiseringsuppgifter för ett Microsoft Entra-tjänsthuvudnamn (eller ett befintligt) med rollbaserad åtkomst för Container Apps och användarnamn och lösenord för Azure Container Registry. Autentiseringsuppgifter lagras säkert på din GitHub-lagringsplats.

Slutligen lagrar exempelwebbappen data i en PostgreSQL-databas. Exempelkoden ansluter till PostgreSQL via en anslutningssträng. Under konfigurationen av Container App vägleder självstudien dig genom att konfigurera miljövariabler som innehåller anslutningsinformation. Du kan också använda en Azure Service-Anslut eller för att utföra samma sak.

Förutsättningar

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

Exempelapp

Python-exempelappen är en restauranggranskningsapp som sparar restaurang och granskar data i PostgreSQL. I slutet av självstudien har du en restauranggranskningsapp distribuerad och körs i Azure Container Apps som ser ut som skärmbilden nedan.

A screenshot of the sample app created from the Python containerized web app used in the Tutorial - Containerized Python App on Azure.

Gå vidare