Overzicht: In containers geplaatste Python-web-app in Azure met MongoDB
Deze zelfstudie bevat een stapsgewijze handleiding die laat zien hoe u een Python-web-app in een container kunt zetten en implementeren in Azure. De app wordt gehost met Azure App Service- en gebruikt MongoDB voor Azure Cosmos DB om gegevens op te slaan. De Web App for Containers van Azure App Service containerindeling abstraheert, het implementatieproces stroomlijnt en u zich kunt richten op ontwikkeling. Zie Azure-containeropties vergelijkenvoor meer informatie over Azure-containeropties.
In deze tutorial doet u het volgende:
Bouw en voer lokaal een Docker-container uit. Deze stap is optioneel.
Bouw rechtstreeks in Azure een Docker containerinstallatiekopieën.
Stel een App Service in om een web-app te maken gebaseerd op de Docker-containerafbeelding.
Na voltooiing van deze zelfstudie hebt u de basis voor Continue integratie (CI) en Continue implementatie (CD) van een Python-web-app naar Azure.
Overzicht van de service
Het servicediagram dat deze zelfstudie ondersteunt, bevat twee omgevingen: ontwikkelomgeving en Azure. Hierin worden de belangrijkste Azure-services gemarkeerd die in het ontwikkelingsproces worden gebruikt.
Ontwikkelomgeving
De onderdelen die de ontwikkelaarsomgeving in deze zelfstudie ondersteunen, zijn onder andere:
Local Development System: een persoonlijke computer die wordt gebruikt voor het coderen, bouwen en testen van de Docker-container.
Docker-containerisatie: Docker wordt gebruikt om de app en de bijbehorende afhankelijkheden in een draagbare container te verpakken.
Ontwikkelhulpprogramma's: bevat een code-editor en andere benodigde hulpprogramma's voor softwareontwikkeling.
lokaal MongoDB-exemplaar: een lokale MongoDB-database die tijdens de ontwikkeling wordt gebruikt voor gegevensopslag.
MongoDB-verbinding: toegang tot de lokale MongoDB-database die via een verbindingsreeks wordt geleverd.
Azure-omgeving
De onderdelen die de Azure-omgeving in deze zelfstudie ondersteunen, zijn onder andere:
-
- In Azure App Service maakt Web App for Containers gebruik van de Docker--containertechnologie om containerhosting van zowel ingebouwde installatiekopieën als aangepaste installatiekopieën te bieden met behulp van Docker.
- Web App for Containers maakt gebruik van een webhook in de Azure Container Registry (ACR) om op de hoogte te worden gesteld van nieuwe images. Wanneer een nieuwe afbeelding naar het register wordt gepusht, activeert de webhookmelding App Service om de update te halen en de app opnieuw te starten.
-
Met Azure Container Registry kunt u Docker-installatiekopieën en hun onderdelen opslaan en beheren in Azure. Het biedt een register in de buurt van uw implementaties in Azure waarmee u de toegang kunt beheren met behulp van uw Microsoft Entra-groepen en -machtigingen.
In deze zelfstudie is Azure Container Registry de registerbron, maar u kunt ook Docker Hub of een privéregister gebruiken met kleine wijzigingen.
-
Azure Cosmos DB voor MongoDB is een NoSQL-database die in deze zelfstudie wordt gebruikt voor gegevensopslag.
De container-app heeft toegang tot de Azure Cosmos DB-resource via een verbindingsreeks, die wordt opgeslagen als een omgevingsvariabele.
Toegang tot Azure Cosmos DB-resource door de container-app is via een verbindingsreeks, die wordt doorgegeven als een omgevingsvariabele aan de container-app.
Authenticatie
In deze zelfstudie bouwt u een Docker-afbeelding, hetzij lokaal of rechtstreeks in Azure, en rolt u deze vervolgens uit naar Azure App Service. De App Service haalt de containerinstallatiekopie op uit een Azure Container Registry-opslagplaats.
App Service maakt gebruik van een door het systeem toegewezen beheerde identiteit om veilig afbeeldingen uit de repository op te halen. Deze beheerde identiteit verleent de web-app machtigingen om te communiceren met andere Azure-resources, waardoor expliciete referenties niet meer nodig zijn. Voor deze zelfstudie wordt de beheerde identiteit tijdens de configuratie van App Service ingesteld voor het gebruik van een containerimage van een register.
De voorbeeldweb-app in de zelfstudie maakt gebruik van MongoDB om gegevens op te slaan. De voorbeeldcode maakt via een verbindingsreeks verbinding met Azure Cosmos DB.
Voorwaarden
U hebt het volgende nodig om deze zelfstudie te voltooien:
Een Azure-account waar u het volgende kunt maken:
- Azure Container Registry
- Azure App Service
- Azure Cosmos DB voor MongoDB- (of toegang tot een equivalent). Als u een Azure Cosmos DB voor MongoDB-database wilt maken, volgt u de stappen in deel 2 van deze zelfstudie.
Visual Studio Code of Azure CLI, afhankelijk van uw keuzeprogramma. Als u Visual Studio Code gebruikt, hebt u de Docker-extensie nodig en Azure App Service-extensie.
Deze Python-pakketten:
Docker- lokaal geïnstalleerd. Dit is optioneel en is alleen vereist als u de container lokaal wilt uitvoeren.
Voorbeeld-app
In deze zelfstudie bouwt u een Python-restaurantbeoordelings-app die Gebruikmaakt van MongoDB voor gegevensopslag. Zie Een Flask-web-app maken en implementeren in Azure met een beheerde identiteitvoor een voorbeeld van PostgreSQL.
Het eindresultaat van deze zelfstudie is een restaurantbeoordelings-app, geïmplementeerd en uitgevoerd in Azure, die eruitziet als de volgende schermopname.