Freigeben über


Erstellen einer containerisierten Python-Web-App in der Cloud

Dieser Artikel ist Teil eines Lernprogramms zum Containerisieren und Bereitstellen einer Python-Web-App für Azure App Service. Mit dem App Service können Sie containerisierte Web-Apps ausführen und über die Funktionalitäten für kontinuierliche Integration/kontinuierliche Bereitstellung (CI/CD) mit Docker Hub, Azure Container Registry und Visual Studio Team Services bereitstellen. In diesem Teil des Lernprogramms erfahren Sie, wie Sie die containerisierte Python-Web-App in der Cloud erstellen.

Im vorherigen optionalen Teil dieser Anleitung wurde ein Container-Image erstellt und lokal ausgeführt. Im Gegensatz dazu erstellen (containerisieren) Sie in diesem Teil des Tutorials eine Python-Web-App in einem Docker-Image direkt in Azure Container Registry. Das Erstellen des Images in Azure ist in der Regel schneller und einfacher als lokal zu erstellen und dann das Image an eine Registrierung zu übertragen. Außerdem erfordert die Erstellung in der Cloud nicht, dass Docker in Ihrer Entwicklungsumgebung ausgeführt wird.

Sobald sich das Docker-Image in der Azure-Containerregistrierung befindet, kann es im Azure App-Dienst bereitgestellt werden.

Dieses Dienstdiagramm hebt die in diesem Artikel behandelten Komponenten hervor.

Ein Screenshot der im Tutorial verwendeten Dienste – Containerisierte Python-App in Azure mit hervorgehobenem Cloud-internen Build-Pfad.

Erstellen einer Azure-Containerregistrierung

Wenn Sie bereits über eine Azure-Containerregistrierung verfügen, die Sie verwenden können, fahren Sie mit dem nächsten Schritt fort. Falls nicht, erstellen Sie eins.

Azure CLI-Befehle können in der Azure Cloud Shell oder auf einer Arbeitsstation ausgeführt werden, auf der die Azure CLIinstalliert ist. Wenn die Ausführung in Cloud Shell erfolgt, überspringen Sie Schritt 3.

  1. Erstellen Sie mithilfe des Befehls az group create eine Ressourcengruppe, falls erforderlich. Wenn Sie in Teil 2. Lokales Erstellen und Testen des Containers dieses Tutorials bereits ein Konto für Azure Cosmos DB for MongoDB eingerichtet haben, legen Sie die Umgebungsvariable RESOURCE_GROUP_NAME auf den Namen der Ressourcengruppe fest, die Sie für dieses Konto verwendet haben, und fahren Sie mit dem nächsten Schritt fort.

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

    LOCATION sollte ein Azure-Standortwert sein. Wählen Sie einen Ort in Ihrer Nähe aus. Sie können Azure-Standortwerte mit dem folgenden Befehl auflisten: az account list-locations -o table.

  2. Erstellen Sie eine Container-Registrierung mit dem Befehl az acr create.

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

    REGISTRY_NAME müssen in Azure eindeutig sein und 5-50 alphanumerische Zeichen enthalten.

    Suchen Sie in der JSON-Ausgabe des Befehls nach dem wert loginServer, bei dem es sich um den vollqualifizierten Registrierungsnamen (alle Kleinbuchstaben) handelt und der den von Ihnen angegebenen Registrierungsnamen enthalten soll.

  3. Wenn Sie die Azure CLI lokal ausführen, melden Sie sich mit dem Befehl az acr login beim Registry an.

    az acr login -n $REGISTRY_NAME
    

    Der Befehl fügt „azurecr.io“ an den Namen an, um den voll qualifizierten Registrierungsnamen zu erstellen. Bei erfolgreicher Ausführung wird die Meldung "Anmeldung erfolgreich" angezeigt.

    Anmerkung

    Der Befehl az acr login wird in Cloud Shell nicht benötigt oder unterstützt.

Erstellen eines Images in Azure Container Registry

Sie können das Containerimage direkt in Azure auf verschiedene Arten erstellen. Zunächst können Sie die Azure Cloud Shell verwenden, die das Image erstellt, ohne ihre lokale Umgebung überhaupt zu verwenden. Sie können auch das Containerimage in Azure aus Ihrer lokalen Umgebung mithilfe von VS Code oder der Azure CLI erstellen. Das Erstellen des Images in der Cloud erfordert nicht, dass Docker in Ihrer lokalen Umgebung ausgeführt wird. Wenn Sie es benötigen, können Sie die Anweisungen in Clone befolgen oder die Beispiel-App in Teil 2 dieses Tutorials herunterladen, um die Beispiel-Flask- oder Django-Web-App abzurufen.

Azure CLI-Befehle können auf einer Workstation mit installierter Azure CLI oder in Azure Cloud Shell ausgeführt werden. Wenn Sie in Cloud Shell arbeiten, überspringen Sie Schritt 1.

  1. Wenn Sie die Azure CLI lokal ausführen, melden Sie sich im Registry an, falls Sie dies noch nicht mit dem Befehl "az acr login" getan haben.

    az acr login -n $REGISTRY_NAME
    

    Wenn Sie auf das Register aus einem anderen Abonnement zugreifen als dem, in dem das Register erstellt wurde, verwenden Sie die Option --suffix.

    Anmerkung

    Der Befehl az acr login wird nicht benötigt und wird in Cloud Shell nicht unterstützt.

  2. Erstellen Sie das Image mit dem Befehl az acr build.

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

    In diesem Befehl:

    • Der Punkt (".") am Ende des Befehls gibt den Speicherort des zu erstellenden Quellcodes an. Wenn Sie diesen Befehl nicht im Stammverzeichnis der Beispiel-App ausführen, geben Sie den Pfad zum Code an.

      Anstatt einen Pfad zum Code in Ihrer Umgebung anzugeben, können Sie optional einen Pfad zum GitHub-Beispiel-Repository angeben: https://github.com/Azure-Samples/msdocs-python-django-container-web-app oder https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.

    • Wenn Sie die Option „-t“ (wie „--image“) weglassen, stellt der Befehl einen lokalen Kontext-Build in die Warteschlange, ohne ihn in die Registrierung zu stellen. Erstellen ohne Pushen kann nützlich sein, um zu überprüfen, ob das Image erstellt wird.

  3. Bestätigen Sie, dass das Container-Image erstellt wurde mit dem Befehl az acr repository list.

    az acr repository list -n $REGISTRY_NAME
    

Nächster Schritt