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 App Service können Sie containerisierte Web-Apps ausführen und über die Funktionen 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 dieses Lernprogramms wurde ein Containerimage erstellt und lokal ausgeführt. Im Gegensatz dazu erstellen Sie in diesem Teil des Lernprogramms eine Python-Web-App (containerisieren) in ein Docker-Image direkt in der 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 für Azure-App Dienst bereitgestellt werden.
Das unten gezeigte Dienstdiagramm hebt die in diesem Artikel behandelten Komponenten hervor.
1. 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 Workstation mit installierter Azure CLI ausgeführt werden. Überspringen Sie Schritt 3, wenn Sie in Cloud Shell ausgeführt werden.
Schritt 1. Erstellen Sie bei Bedarf eine Ressourcengruppe mit dem Befehl "az group create ". Wenn Sie bereits ein Azure Cosmos DB für MongoDB-Konto in Teil 2 eingerichtet haben. Erstellen und testen Sie den Container lokal in diesem Lernprogramm, legen Sie RESOURCE_GROUP_NAME auf den Namen der Ressourcengruppe fest, die Sie für dieses Konto verwendet haben, und fahren Sie mit Schritt 2 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 Standort in Ihrer Nähe aus. Sie können Azure-Standortwerte mit dem folgenden Befehl auflisten: az account list-locations -o table
Schritt 2. Erstellen Sie eine Containerregistrierung 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 loginServer
Wert, bei dem es sich um den vollqualifizierten Registrierungsnamen (alle Kleinbuchstaben) handelt und der den von Ihnen angegebenen Registrierungsnamen enthalten soll.
Schritt 3. Wenn Sie die Azure CLI lokal ausführen, melden Sie sich mit dem Az acr-Anmeldebefehl bei der Registrierung an .
az acr login -n $REGISTRY_NAME
Mit dem Befehl wird dem Namen "azurecr.io" hinzugefügt, um den vollqualifizierten Registrierungsnamen zu erstellen. Bei erfolgreicher Ausführung wird die Meldung "Anmeldung erfolgreich" angezeigt.
Hinweis
Der az acr login
Befehl wird in Cloud Shell nicht benötigt oder unterstützt.
2. Erstellen eines Images in der Azure-Containerregistrierung
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 dies benötigen, können Sie die Anweisungen in Clone befolgen oder die Beispiel-App in Teil 2 dieses Lernprogramms herunterladen, um die Beispiel-Flask- oder Django-Web-App abzurufen.
Azure CLI-Befehle können auf einer Arbeitsstation ausgeführt werden, auf der die Azure CLI installiert oder in Azure Cloud Shell installiert ist. Überspringen Sie Schritt 1, wenn Sie in Cloud Shell ausgeführt werden.
Schritt 1. Wenn Sie die Azure CLI lokal ausführen, melden Sie sich bei der Registrierung an, wenn Sie dies noch nicht mit dem Az acr-Anmeldebefehl getan haben.
az acr login -n $REGISTRY_NAME
Wenn Sie auf die Registrierung von einem anderen Abonnement als dem Abonnement zugreifen, in dem die Registrierung erstellt wurde, verwenden Sie die --suffix
Option.
Hinweis
Der az acr login
Befehl wird in Cloud Shell nicht benötigt oder unterstützt.
Schritt 2. Erstellen Sie das Image mit dem Az acr-Buildbefehl .
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.
Anstelle eines Pfads zum Code in Ihrer Umgebung 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
-t
Option (identisch mit--image
) verlassen, stellt der Befehl einen lokalen Kontextbuild in die Warteschlange, ohne ihn an die Registrierung zu übertragen. Das Erstellen ohne Push kann hilfreich sein, um zu überprüfen, ob das Image erstellt wird.
Schritt 3. Vergewissern Sie sich, dass das Containerimage mit dem Befehl "az acr repository list" erstellt wurde.
az acr repository list -n $REGISTRY_NAME