Delen via


Een in een container geplaatste Python-web-app lokaal bouwen en uitvoeren met MongoDB

Dit artikel maakt deel uit van een zelfstudie over het in een container zetten en implementeren van een in een container geplaatste Python-web-app in Azure-app Service. Met App Service kunt u in containers geplaatste web-apps uitvoeren en implementeren via mogelijkheden voor continue integratie/continue implementatie (CI/CD) met Docker Hub, Azure Container Registry en Visual Studio Team Services. In dit deel van de zelfstudie leert u hoe u de in een container geplaatste Python-web-app lokaal bouwt en uitvoert. Deze stap is optioneel en is niet vereist voor het implementeren van de voorbeeld-app in Azure.

Voor het lokaal uitvoeren van een Docker-installatiekopieën in uw ontwikkelomgeving is de installatie buiten de implementatie naar Azure vereist. U kunt het beschouwen als een investering die toekomstige ontwikkelingscycli gemakkelijker kan maken, met name wanneer u verdergaat dan voorbeeld-apps en u begint met het maken van uw eigen web-apps. Als u de voorbeeld-apps voor Django en Flask wilt implementeren, kunt u deze stap overslaan en naar de volgende stap in deze zelfstudie gaan. U kunt altijd terugkeren na de implementatie in Azure en deze stappen uitvoeren.

In het volgende servicediagram ziet u de onderdelen die in dit artikel worden behandeld.

A screenshot of the Tutorial - Containerized Python App on Azure with local part highlighted.

1. Kloon of download de voorbeeld-app

Kloon de opslagplaats:

# Django
git clone https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git

# Flask
git clone https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git

Open vervolgens die map:

# Django
cd msdocs-python-django-container-web-app

# Flask
cd msdocs-python-flask-container-web-app

2. Een Docker-installatiekopieën bouwen

Als u een van de frameworkvoorbeeld-apps gebruikt die beschikbaar zijn voor Django en Flask, gaat u naartoe. Als u met uw eigen voorbeeld-app werkt, bekijkt u hoe de voorbeeld-apps zijn ingesteld, met name het Dockerfile in de hoofdmap.

Voor deze instructies zijn Visual Studio Code en de Docker-extensie vereist. Ga naar de voorbeeldmap die u hebt gekloond of gedownload en open VS Code met de opdracht code ..

Notitie

Voor de stappen in deze sectie moet de Docker-daemon worden uitgevoerd. In sommige installaties, bijvoorbeeld in Windows, moet u Docker Desktop openen, waarmee de daemon wordt gestart voordat u doorgaat.

Instructies Schermafbeelding
Open de Docker-extensie.

Als de Docker-extensie een fout 'Kan geen verbinding maken' rapporteert, controleert u of Docker is geïnstalleerd en wordt uitgevoerd. Als dit de eerste keer is dat u met Docker werkt, hebt u waarschijnlijk geen containers, installatiekopieën of verbonden registers.
A screenshot showing how to open the Docker extension in Visual Studio Code.
Bouw de installatiekopieën.
  • Klik in projectverkenner met de projectbestanden met de rechtermuisknop op de Dockerfile en selecteer Build Image....

  • U kunt ook het opdrachtenpalet (F1 of Ctrl+Shift+P) gebruiken en 'Docker Images: Build Images' typen om de opdracht aan te roepen.

Zie de dockerfile-verwijzing voor meer informatie over de syntaxis van Dockerfile.
A screenshot showing how to build the Docker image in Visual Studio Code.
Controleer of de installatiekopie is gemaakt.
  • Ga naar de sectie IMAGES van de Docker-extensie.

  • Zoek naar onlangs gebouwde installatiekopie. De naam van de containerinstallatiekopie is 'msdocspythoncontainerwebapp', die is ingesteld in het bestand .vscode/tasks.json .

A screenshot showing how to confirm the built image in Visual Studio Code.

Op dit moment hebt u een installatiekopie lokaal gemaakt. De installatiekopie die u hebt gemaakt, heeft de naam msdocspythoncontainerwebapp en tag "latest". Tags zijn een manier om versie-informatie, bedoeld gebruik, stabiliteit of andere informatie te definiëren. Zie Aanbevelingen voor het taggen en versiebeheer van containerinstallatiekopieën voor meer informatie.

Installatiekopieën die zijn gebouwd vanuit VS Code of vanuit de Docker CLI, kunnen ook rechtstreeks worden weergegeven met de Docker Desktop-toepassing .

3. MongoDB instellen

Voor deze zelfstudie hebt u een MongoDB-database met de naam restaurants_reviews en een verzameling met de naam restaurants_reviews nodig. In de stappen in deze sectie ziet u hoe u een lokale installatie van MongoDB of Azure Cosmos DB voor MongoDB gebruikt om de database en verzameling te maken en te openen.

Belangrijk

Gebruik geen MongoDB-database die u in productie gaat gebruiken. In deze zelfstudie slaat u de MongoDB-verbindingsreeks op in een omgevingsvariabele. Dit maakt het waarneembaar door iedereen die uw container kan inspecteren (bijvoorbeeld met behulp van docker inspect).

Stap 1: Installeer MongoDB als dit nog niet is gebeurd.

U kunt controleren op de installatie van MongoDB met behulp van de MongoDB-shell (mongosh).

  • De volgende opdracht voert de shell in en geeft u de versie van zowel mongosh als mongoDB-server die op uw systeem is geïnstalleerd:

    mongosh
    
  • Met de volgende opdracht krijgt u alleen de versie van de MongoDB-server die op uw systeem is geïnstalleerd:

    mongosh --quiet --exec 'db.version()'
    

Als deze opdrachten niet werken, moet u mongosh mogelijk expliciet installeren of mongosh verbinden met uw MongoDB-server.

Een alternatief in sommige installaties is het rechtstreeks aanroepen van de Mongo-daemon.

mongod --version

Stap 2: bewerk het mongod.cfg-bestand om het IP-adres van uw computer toe te voegen.

Het mongod-configuratiebestand heeft een bindIp sleutel waarmee hostnamen en IP-adressen worden gedefinieerd die MongoDB luistert naar clientverbindingen. Voeg het huidige IP-adres van uw lokale ontwikkelcomputer toe. De voorbeeld-app die lokaal wordt uitgevoerd in een Docker-container, communiceert met dit adres naar de hostcomputer.

Een deel van het configuratiebestand moet er bijvoorbeeld als volgt uitzien:

net:
  port: 27017
  bindIp: 127.0.0.1,<local-ip-address>

Start MongoDB opnieuw om wijzigingen in het configuratiebestand op te halen.

Stap 3: Maak een database en verzameling in de lokale MongoDB-database.

Stel de databasenaam in op 'restaurants_reviews' en de naam van de verzameling op 'restaurants_reviews'. U kunt een database en verzameling maken met de VS Code MongoDB-extensie, de MongoDB-shell (mongosh) of een ander mondoDB-hulpprogramma.

Voor de MongoDB-shell zijn hier voorbeelden van opdrachten voor het maken van de database en verzameling:

> help
> use restaurants_reviews
> db.restaurants_reviews.insertOne({})
> show dbs
> exit

Op dit moment is uw lokale MongoDB-verbindingsreeks 'mongodb://127.0.0.1:27017/', de databasenaam 'restaurants_reviews' en de naam van de verzameling 'restaurants_reviews'.

4. Voer de installatiekopieën lokaal uit in een container

Met informatie over het maken van verbinding met een MongoDB kunt u de container lokaal uitvoeren. In de voorbeeld-app wordt verwacht dat MongoDB-verbindingsgegevens worden doorgegeven in omgevingsvariabelen. Er zijn verschillende manieren om omgevingsvariabelen lokaal door te geven aan de container. Elk heeft voor- en nadelen in termen van beveiliging. Vermijd het inchecken van gevoelige informatie of het achterlaten van gevoelige informatie in code in de container.

Notitie

Wanneer de web-app wordt geïmplementeerd in Azure, krijgt de web-app verbindingsgegevens van omgevingswaarden die zijn ingesteld als App Service-configuratie-instellingen en zijn geen van de wijzigingen voor het scenario van de lokale ontwikkelomgeving van toepassing.

Instructies Schermafbeelding
In de map .vscode van de voorbeeld-app definieert het bestand settings.json wat er gebeurt wanneer u de Docker-extensie gebruikt en Selecteer Uitvoeren of Interactief uitvoeren in het contextmenu van een tag. Het bestand settings.json bevat twee sjablonen voor de (MongoDB local) en (MongoDB Azure) scenario's.

Als u een lokale MongoDB-database gebruikt:
  • Vervang beide exemplaren door <YOUR_IP_ADDRESS> uw IP-adres.

  • Vervang beide exemplaren door <CONNECTION_STRING> de verbindingsreeks voor uw MongoDB-database.

Als u een Azure Cosmos DB voor MongoDB-database gebruikt:
  • Vervang beide exemplaren door <CONNECTION_STRING> de Azure Cosmos DB voor MongoDB-verbindingsreeks.
Stel de docker.dockerPath configuratie-instelling in die door de sjablonen wordt gebruikt. Als u dit wilt instellendocker.dockerPath, opent u het opdrachtenpalet van VS Code (Ctrl+Shift+P), voert u 'Voorkeuren: Werkruimte openen Instellingen' in en voert u 'docker.dockerPath' in het vak Zoekinstellingen in. Voer docker (zonder aanhalingstekens) in voor de waarde van de instelling.

Notitie

Zowel de naam van de database als de naam van de verzameling wordt restaurants_reviewservan uitgegaan.

A screenshot showing the settings.json file Visual Studio Code.
Voer de installatiekopieën uit.
  • Zoek in de sectie IMAGES van de Docker-extensie de ingebouwde installatiekopie.

  • Vouw de afbeelding uit om de meest recente tag te vinden, klik met de rechtermuisknop en selecteer Interactief uitvoeren.

  • U wordt gevraagd om de taak te selecteren die geschikt is voor uw scenario, ofwel 'Interactive run configuration (MongoDB local)' of 'Interactive run configuration (MongoDB Azure)'.

Met interactieve uitvoering ziet u alle afdrukinstructies in de code, wat handig kan zijn voor foutopsporing. U kunt ook Uitvoeren selecteren. Dit is niet-interactief en houdt standaardinvoer niet open.

Belangrijk

Deze stap mislukt als het standaardterminalprofiel is ingesteld op de opdrachtprompt (Windows). Als u het standaardprofiel wilt wijzigen, opent u het OPDRACHTENpalet van VS Code (Ctrl+Shift+P), voert u 'Terminal: Standaardprofiel selecteren' in en selecteert u vervolgens een ander profiel in de vervolgkeuzelijst, bijvoorbeeld Git Bash of PowerShell.

A screenshot showing how to run a Docker container in Visual Studio Code.
Controleer of de container wordt uitgevoerd.
  • Zoek de container in de sectie CONTAINERS van de Docker-extensie.

  • Vouw het knooppunt Afzonderlijke containers uit en controleer of msdocspythoncontainerwebapp wordt uitgevoerd. Als deze wordt uitgevoerd, ziet u een groen driehoeksymbool naast de containernaam.

A screenshot showing how to confirm a Docker container is running in Visual Studio Code.
Test de web-app door met de rechtermuisknop op de containernaam te klikken en Openen in browser te selecteren.

De browser wordt in uw standaardbrowser geopend als "http://127.0.0.1:8000" voor Django of "http://127.0.0.1:5000/" voor Flask.
A screenshot showing how to browse the endpoint of a Docker container in Visual Studio Code.
Stop de container.
  • Zoek in de sectie CONTAINERS van de Docker-extensie de actieve container.

  • Klik met de rechtermuisknop op de container en selecteer Stoppen.

A screenshot showing how to stop a running Docker container in Visual Studio Code.

Tip

U kunt ook de container uitvoeren die een uitvoerings- of foutopsporingsconfiguratie selecteert. De Docker-extensietaken in tasks.json worden aangeroepen wanneer u fouten uitvoert of foutopsporing uitvoert. De aangeroepen taak is afhankelijk van de startconfiguratie die u selecteert. Geef <voor de taak Docker: Python (MongoDB local)' UW-IP-ADRES> op. Geef <voor de taak Docker: Python (MongoDB Azure)' CONNECTION-STRING> op.

U kunt ook een container starten vanuit een installatiekopieën en stoppen met de Docker Desktop-toepassing .

Volgende stap