Delen via


Een in een container geplaatste Python-web-app bouwen in de cloud

Dit artikel maakt deel uit van een zelfstudie over het in een container zetten en implementeren van een 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 in de cloud bouwt.

Het vorige optionele deel van deze zelfstudie bevatte het bouwen en lokaal uitvoeren van een containerafbeelding. In dit deel van de zelfstudie bouwt u daarentegen een Python-web-app tot een Docker-image rechtstreeks in Azure Container Registry. Het bouwen van de installatiekopieën in Azure is doorgaans sneller en eenvoudiger dan lokaal bouwen en vervolgens de installatiekopieën naar een register pushen. Voor het bouwen in de cloud hoeft Docker ook niet in uw ontwikkelomgeving te worden uitgevoerd.

Zodra de Docker-installatiekopie zich in Azure Container Registry bevindt, kan deze worden geïmplementeerd in Azure App Service.

Dit servicediagram markeert de onderdelen die in dit artikel worden behandeld.

Een schermopname van de services die worden gebruikt in de zelfstudie: In containers geplaatste Python-app in Azure met het pad voor de build-in-cloud gemarkeerd.

Een Azure Container Registry maken

Als u al een Azure Container Registry hebt die u kunt gebruiken, gaat u naar de volgende stap. Als u dat niet doet, maakt u er een.

Azure CLI-opdrachten kunnen worden uitgevoerd in de Azure Cloud Shell- of op een werkstation waarop de Azure CLI is geïnstalleerd. Sla stap 3over wanneer u in Cloud Shell werkt.

  1. Maak indien dit nodig is een resourcegroep met de opdracht az group create. Als u al een Azure Cosmos DB voor MongoDB-account hebt ingesteld in deel 2. Bouw en test de container lokaal van deze zelfstudie, stel de omgevingsvariabele RESOURCE_GROUP_NAME in op de naam van de resourcegroep die u voor dat account hebt gebruikt en ga verder met de volgende stap.

    RESOURCE_GROUP_NAME='msdocs-web-app-rg'
    LOCATION='eastus'
    
    az group create -n $RESOURCE_GROUP_NAME -l $LOCATION
    

    LOCATION moet een Azure-locatiewaarde zijn. Kies een locatie bij u in de buurt. U kunt Azure-locatiewaarden weergeven met de volgende opdracht: az account list-locations -o table.

  2. Maak een containerregister met de opdracht az acr create.

    REGISTRY_NAME='<your Azure Container Registry name>'
    
    az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Basic
    

    REGISTRY_NAME moet uniek zijn binnen Azure en 5-50 alfanumerieke tekens bevatten.

    Zoek in de JSON-uitvoer van de opdracht naar de loginServer waarde. Dit is de volledig gekwalificeerde registernaam (alle kleine letters) en die de registernaam moet bevatten die u hebt opgegeven.

  3. Als u de Azure CLI lokaal uitvoert, meldt u zich aan bij het register met behulp van de opdracht az acr login.

    az acr login -n $REGISTRY_NAME
    

    Met de opdracht wordt 'azurecr.io' toegevoegd aan de naam om de volledig gekwalificeerde registernaam te maken. Als dit lukt, ziet u het bericht 'Aanmelden voltooid'.

    Notitie

    De opdracht az acr login is niet nodig of wordt niet ondersteund in Cloud Shell.

Een image maken in Azure Container Registry

U kunt containerimages op verschillende manieren rechtstreeks in Azure bouwen. Eerst kunt u de Azure Cloud Shell gebruiken, waarmee de installatiekopieën worden gebouwd zonder dat u uw lokale omgeving hoeft te gebruiken. U kunt ook de containerinstallatiekopieën in Azure bouwen vanuit uw lokale omgeving met behulp van VS Code of de Azure CLI. Voor het bouwen van het image in de cloud hoeft Docker niet op uw lokale omgeving te draaien. Als dat nodig is, kunt u de instructies volgen in Kloon of de voorbeeld-app downloaden in deel 2 van deze zelfstudie om de voorbeeld-Flask- of Django-web-app op te halen.

Azure CLI-opdrachten kunnen worden uitgevoerd op een werkstation waarop de Azure CLI is geïnstalleerd of in Azure Cloud Shell-. Als u in Cloud Shell werkt, slaat u stap 1over.

  1. Als u de Azure CLI lokaal uitvoert, meldt u zich aan bij het register als u dit nog niet hebt gedaan met de opdracht az acr login.

    az acr login -n $REGISTRY_NAME
    

    Als u het register opent vanuit een ander abonnement dan het abonnement waarin het register is gemaakt, gebruikt u de --suffix-switch.

    Notitie

    De opdracht az acr login is niet nodig en wordt niet ondersteund in Cloud Shell.

  2. Bouw de image met de opdracht az acr build.

    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest .
    

    In deze opdracht:

    • De punt (".") aan het einde van de opdracht geeft de locatie aan van de broncode die moet worden gebouwd. Als u deze opdracht niet uitvoert in de hoofdmap van de voorbeeld-app, geeft u het pad naar de code op.

      In plaats van een pad naar de code in uw omgeving kunt u desgewenst een pad opgeven naar de GitHub-voorbeeldopslagplaats: https://github.com/Azure-Samples/msdocs-python-django-container-web-app of https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.

    • Als u de optie -t (hetzelfde als --image) weglaat, plaatst de opdracht een lokale context build in de wachtrij zonder deze naar het register te pushen. Bouwen zonder pushen kan handig zijn om te controleren of de afbeeldingen worden aangemaakt.

  3. Controleer of de containerafbeelding is gemaakt met de opdracht az acr repository list.

    az acr repository list -n $REGISTRY_NAME
    

Volgende stap