Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogramm erfahren Sie, wie Sie eine Python Flask oder FastAPI Web App containerisieren und in Azure Container Apps bereitstellen. Azure Container Apps verwendet Docker Containertechnologie, um integrierte Images und benutzerdefinierte Images zu hosten. Weitere Informationen zur Verwendung von Containern in Azure finden Sie unter Comparing Azure Containeroptionen.
In diesem Lernprogramm verwenden Sie die Docker CLI und die Azure CLI, um ein Docker-Image zu erstellen und in Azure Container Apps bereitzustellen. Sie können auch über Visual Studio Code und die Azure Tools Extension bereitstellen.
Voraussetzungen
Um die Schritte dieses Tutorials abzuschließen, benötigen Sie Folgendes:
Ein Azure Konto, in dem Sie eine Web-App für Azure Container Apps bereitstellen können. (Der Vorgang erstellt einen Azure Container Registry und Log Analytics Arbeitsbereich für Sie.)
Azure CLI, Docker und die Docker CLI in Ihrer lokalen Umgebung installiert.
Beispielcode abrufen
Rufen Sie in Ihrer Umgebung den Code ab.
Hinzufügen von Dockerfile- und .dockerignore-Dateien
Fügen Sie einen Dockerfile hinzu, um Docker anzuweisen, wie das Image erstellt werden soll. Der Dockerfile gibt die Verwendung von Gunicorn an, einem Webserver für den Produktionsbetrieb, der Webanforderungen an die Frameworks Flask und FastAPI weiterleitet. Die Befehle ENTRYPOINT und CMD weisen Gunicorn an, Anforderungen für das Anwendungsobjekt zu verarbeiten.
# syntax=docker/dockerfile:1
FROM python:3.11
WORKDIR /code
COPY requirements.txt .
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 50505
ENTRYPOINT ["gunicorn", "--config", "gunicorn.conf.py", "app:app"]
In diesem Beispiel wird 50505 der Containerport (intern) verwendet, Sie können jedoch jeden kostenlosen Port verwenden.
Überprüfen Sie die requirements.txt Datei, um sicherzustellen, dass sie gunicorn enthält.
Flask==3.1.0
gunicorn
Konfiguration von Gunicorn
Sie können Gunicorn mithilfe einer gunicorn.conf.py Datei konfigurieren. Wenn sich die gunicorn.conf.py-Datei im selben Verzeichnis befindet, in dem Sie gunicorn ausführen, müssen Sie den Speicherort in der ENTRYPOINT oder CMD Anweisung des Dockerfile nicht angeben. Weitere Informationen zur Spezifikation der Konfigurationsdatei finden Sie unter Gunicorn-Einstellungen.
In diesem Tutorial wird die vorgeschlagene Konfigurationsdatei so konfiguriert, dass Gunicorn die Anzahl der Worker basierend auf der Anzahl der verfügbaren CPU-Kerne erhöht. Weitere Informationen zu gunicorn.conf.py Dateieinstellungen finden Sie unter Gunicorn-Konfiguration.
# Gunicorn configuration file
import multiprocessing
max_requests = 1000
max_requests_jitter = 50
log_file = "-"
bind = "0.0.0.0:50505"
workers = (multiprocessing.cpu_count() * 2) + 1
threads = workers
timeout = 120
Fügen Sie eine .dockerignore Datei hinzu, um unnötige Dateien aus dem Image auszuschließen.
.git*
**/*.pyc
.venv/
Lokales Erstellen und Ausführen des Images
Erstellen Sie das Image lokal.
Führen Sie das Image lokal in einem Docker-Container aus.
docker run --detach --publish 5000:50505 flask-demo
Öffnen Sie http://localhost:5000 in Ihrem Browser, um die lokal ausgeführte Web-App anzuzeigen.
Die --detach Option führt den Container im Hintergrund aus. Die --publish-Option ordnet den Containerport einem Port auf dem Host zu. Der (externe) Host-Port steht an erster Stelle des Paares und der (interne) Container-Port an zweiter Stelle. Weitere Informationen finden Sie in der Docker run-Referenz.
Bereitstellen von Web-App für Azure
Um das Docker-Image für Azure Container Apps bereitzustellen, verwenden Sie den Befehl az containerapp up. (Die folgenden Befehle werden für die Bash-Shell angezeigt. Ändern Sie das Fortsetzungszeichen (\) entsprechend, wie es für andere Shells geeignet ist.
az containerapp up \
--resource-group web-flask-aca-rg --name web-aca-app \
--ingress external --target-port 50505 --source .
Wenn die Bereitstellung abgeschlossen ist, verfügen Sie über eine Ressourcengruppe mit den folgenden Ressourcen darin:
- Eine Azure Container Registry
- Eine Container Apps-Umgebung
- Eine Container App, die das Web-App-Image ausführt
- Ein Log Analytics Arbeitsbereich
Die Ausgabe des az containerapp up Befehls enthält die URL für die bereitgestellte App. Öffnen Sie die URL in Ihrem Browser, um die Web-App anzuzeigen, die in Azure ausgeführt wird. Die URL sieht wie folgt aus https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, wobei die <generated-text> und <location-info> für Ihre Bereitstellung eindeutig sind.
Aktualisierungen vornehmen und erneut bereitstellen
Nachdem Sie Codeaktualisierungen vorgenommen haben, führen Sie den vorherigen az containerapp up Befehl erneut aus. Der Befehl erstellt das Image neu und stellt es für Azure Container Apps erneut bereit. Wenn Sie den Befehl erneut ausführen, wird erkannt, dass die Ressourcengruppe und die App bereits vorhanden sind, und aktualisiert nur die Container-App.
In komplexeren Updateszenarien können Sie die Container-App durch die gemeinsame Verwendung der Befehle az acr build und az containerapp update erneut bereitstellen und aktualisieren.
Bereinigung
Alle Azure Ressourcen, die Sie in diesem Lernprogramm erstellt haben, befinden sich in derselben Ressourcengruppe. Durch Das Entfernen der Ressourcengruppe werden alle Ressourcen in der Ressourcengruppe entfernt. Es ist die schnellste Möglichkeit, alle Azure Ressourcen zu entfernen, die für Ihre App verwendet werden.
Um Ressourcen zu entfernen, verwenden Sie den Befehl az group delete.
Sie können die Gruppe auch im portal Azure oder in Visual Studio Code entfernen, indem Sie die Erweiterung Azure Tools verwenden.
Nächste Schritte
Weitere Informationen finden Sie in den folgenden Ressourcen: