Erstellen einer containerisierten Python-Web-App in Azure

Dieser Artikel ist Teil 3 einer 5-partigen Lernprogrammreihe zum Containerisieren und Bereitstellen einer Python Web-App für Azure App Service. In Teil 2 haben Sie das Containerimage lokal erstellt und ausgeführt. In diesem Artikel erstellen Sie die gleiche Python Web-App direkt in Azure Container Registry, ohne Docker lokal zu installieren. Das Erstellen des Bilds in Azure ist in der Regel schneller und einfacher als das lokale Erstellen und anschließendes Pushen an eine Registrierung. Die cloudbasierte Imageerstellung beseitigt auch die Notwendigkeit, dass Docker in Ihrer Entwicklungsumgebung ausgeführt werden muss.

Mit Azure App Service können Sie containerisierte Web-Apps mithilfe von CI/CD-Pipelines von Plattformen wie Docker Hub, Azure Container Registry und Azure DevOps bereitstellen und ausführen. Sobald sich das Docker-Image in Azure Container Registry befindet, können Sie es für Azure App Service bereitstellen.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie Teil 2 dieser Lernprogrammreihe abgeschlossen haben, die Folgendes behandelt:

  • Klonen des Beispiel-Repositorys (Django oder Flask).
  • Erstellen einer Ressourcengruppe für Azure Ressourcen.
  • Führen Sie die containerisierte App lokal aus, um zu überprüfen, ob sie funktioniert.

Außerdem benötigen Sie:

Wichtig

Das Beispiel-Dockerfile verwendet python:3.8-slim als Basis-Image. Python 3.8 erreichte Ende des Lebenszyklus im Oktober 2024 und erhält keine Sicherheitsupdates mehr. Aktualisieren Sie Ihr Dockerfile, um für Produktivbereitstellungen python:3.12-slim oder python:3.13-slim zu verwenden.

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 Container Registry verfügen, überspringen Sie diesen Schritt, und fahren Sie mit dem nächsten Schritt fort. Erstellen Sie andernfalls mithilfe der Azure CLI eine neue Azure Container Registry.

Sie können Azure CLI Befehle in der Azure Cloud Shell oder in Ihrer lokalen Entwicklungsumgebung ausführen, wobei die Azure CLI installiert ist.

Anmerkung

Verwenden Sie die gleichen Namen wie in Teil 2 dieser Lernprogrammreihe.

  1. Erstellen Sie eine Azure Containerregistrierung mithilfe des Befehls "az acr erstellen".

    #!/bin/bash
    # Use the resource group that you created in part 2 of this tutorial series.
    RESOURCE_GROUP_NAME='msdocs-web-app-rg'
    # REGISTRY_NAME must be unique within Azure and contain 5-50 alphanumeric characters.
    # If the name is already taken, you'll receive an error. Choose a different name and retry.
    REGISTRY_NAME='msdocscontainerregistryname'
    
    echo "Creating Azure Container Registry $REGISTRY_NAME..."
    az acr create -g $RESOURCE_GROUP_NAME -n $REGISTRY_NAME --sku Standard
    

    Suchen Sie in der JSON-Ausgabe des Befehls den loginServer Wert. Dieser Wert stellt den vollqualifizierten Registrierungsnamen (alle Kleinbuchstaben) dar und enthält den Registrierungsnamen.

    Beispielausgabe:

    {
      "loginServer": "msdocscontainerregistryname.azurecr.io",
      "name": "msdocscontainerregistryname",
      ...
    }
    
  2. Wenn Sie die Azure CLI auf Ihrem lokalen Computer verwenden, führen Sie den Az acr-Anmeldebefehl aus, um sich bei der Containerregistrierung anzumelden.

    az acr login -n $REGISTRY_NAME
    

    Der -n-Parameter akzeptiert entweder den kurzen Registry-Namen (zum Beispiel msdocscontainerregistryname) oder den vollqualifizierten Registry-Namen (msdocscontainerregistryname.azurecr.io). Der Befehl authentifiziert Docker mit Azure Container Registry mit Ihren Azure CLI Anmeldeinformationen.

    Erwartete Ausgabe:

    Login Succeeded
    

    Anmerkung

    Wenn Sie Azure Cloud Shell verwenden, müssen Sie den az acr login Befehl nicht ausführen, da ihre Cloud Shell Sitzung die Authentifizierung automatisch verarbeitet.

Erstellen eines Images in Azure Container Registry

Sie können das Containerimage direkt in Azure mithilfe verschiedener Ansätze generieren:

  • Mit dem Azure Cloud Shell können Sie das Bild vollständig in der Cloud erstellen, unabhängig von Ihrer lokalen Umgebung.
  • Alternativ können Sie VS Code oder die Azure CLI verwenden, um das Image in Azure aus Ihrem lokalen Setup zu erstellen, ohne dass Docker lokal ausgeführt werden muss.

Sie können Azure CLI-Befehle in Ihrer lokalen Entwicklungsumgebung ausführen, indem Sie die installierte Azure CLI oder Azure Cloud Shell verwenden.

  1. Wechseln Sie in der Konsole zum Stammordner Ihres geklonten Repositorys aus Teil 2 dieser Tutorialreihe.

  2. Erstellen Sie das Containerimage mithilfe des Az acr-Buildbefehls .

    Lokale Entwicklung:

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

    Azure Cloud Shell:

    Wenn Sie Azure Cloud Shell verwenden, geben Sie die GitHub Repository-URL anstelle des lokalen Pfads an (.):

    # For Django sample:
    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git
    
    # For Flask sample:
    az acr build -r $REGISTRY_NAME -g $RESOURCE_GROUP_NAME -t msdocspythoncontainerwebapp:latest https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git
    

    Das letzte Argument (. oder die Git-URL) ist der Docker-Buildkontext – das Verzeichnis mit den Dockerfile- und Anwendungsdateien, die Docker zum Erstellen des Images verwendet.

  3. Vergewissern Sie sich, dass das Containerimage mithilfe des Befehls "az acr repository list" erstellt wurde.

    az acr repository list -n $REGISTRY_NAME
    

    Erwartete Ausgabe:

    [
      "msdocspythoncontainerwebapp"
    ]
    

Nächster Schritt