Översikt: Containerbaserad Python-webbapp i Azure med MongoDB
Den här självstudien visar hur du containeriserar en Python-webbapp och distribuerar den till Azure. Webbappen för en enda container finns i Azure App Service och använder MongoDB för Azure Cosmos DB för att lagra data. Med App Service Web App for Containers kan du fokusera på att skapa containrar utan att behöva bekymra dig om att hantera och underhålla en underliggande containerorkestrerare. När du skapar webbappar är Azure App Service ett bra alternativ för att utföra dina första steg med containrar. Mer information om hur du använder containrar i Azure finns i Jämföra Azure-containeralternativ.
I den här självstudien kommer du att:
Skapa och kör en Docker-container lokalt. Steget är valfritt.
Skapa en Docker-containeravbildning direkt i Azure.
Konfigurera en App Service för att skapa en webbapp baserat på Docker-containeravbildningen.
Efter den här självstudien har du grunden 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 två miljöer (utvecklarmiljö och Azure) och de olika Azure-tjänster som används i självstudien.
De komponenter som stöder den här självstudien och som visas i diagrammet ovan är:
-
Den underliggande App Service-funktionen som möjliggör containerinkapsning är Web App for Containers. Azure App Service använder Docker-containertekniken som värd för både inbyggda avbildningar och anpassade avbildningar. I den här självstudien skapar du en avbildning från Python-kod och distribuerar den till Web App for Containers.
Web App for Containers använder en webhook i registret för att få meddelanden om nya avbildningar. En push-överföring av en ny avbildning till lagringsplatsen utlöser App Service för att hämta avbildningen och starta om.
-
Med Azure Container Registry kan du arbeta med Docker-avbildningar och dess komponenter i Azure. Det tillhandahåller ett register som är nära dina distributioner i Azure och som ger dig kontroll över åtkomsten, vilket gör det möjligt att använda dina Microsoft Entra-grupper och -behörigheter.
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 Cosmos DB for MongoDB är en NoSQL-databas som används i den här självstudien för att lagra data.
Åtkomst till Azure Cosmos DB-resursen sker via en anslutningssträng, som skickas som en miljövariabel till den containerbaserade appen.
Autentisering
I den här självstudien skapar du en Docker-avbildning (antingen lokalt eller direkt i Azure) och distribuerar den till Azure App Service. App Service hämtar containeravbildningen från en Azure Container Registry-lagringsplats.
App Service använder hanterad identitet för att hämta avbildningar från Azure Container Registry. Med hanterad identitet kan du bevilja behörigheter till webbappen så att den kan komma åt andra Azure-resurser utan att behöva ange autentiseringsuppgifter. Mer specifikt använder den här självstudien en systemtilldelad hanterad identitet. Hanterad identitet konfigureras under installationen av App Service för att använda en registercontaineravbildning.
Exempelwebbappen i självstudien använder MongoDB för att lagra data. Exempelkoden ansluter till Azure Cosmos DB via en anslutningssträng.
Förutsättningar
För att slutföra den här självstudien behöver du:
Ett Azure-konto där du kan skapa:
- Azure Container Registry
- Azure App Service
- Azure Cosmos DB för MongoDB (eller åtkomst till en motsvarighet). Om du vill skapa en Azure Cosmos DB for MongoDB-databas rekommenderar vi att du följer stegen i del 2 i den här självstudien.
Visual Studio Code eller Azure CLI, beroende på vilket verktyg du ska använda.
- För Visual Studio Code behöver du Docker-tillägget och Azure App Service-tillägget.
Python-paket:
Docker installerat lokalt om du vill köra containern lokalt.
Exempelapp
Python-exempelappen är en restauranggranskningsapp som sparar restaurang och granskar data i MongoDB. Ett exempel på en webbapp med PostgreSQL finns i Skapa och distribuera en Flask-webbapp till Azure med en hanterad identitet.
I slutet av självstudien har du en restauranggranskningsapp distribuerad och körs i Azure som ser ut som skärmbilden nedan.