1. Einführung
Cloud Run ist eine verwaltete Computing-Plattform, mit der Sie zustandslose Container ausführen können, die über HTTP-Anfragen aufrufbar sind. Es basiert auf dem Open-Source-Projekt Knative. Dadurch können Sie Ihre Arbeitslasten auf verschiedene Plattformen übertragen. Cloud Run arbeitet serverlos und benötigt keine Infrastrukturverwaltung. So können Sie sich ganz auf das Programmieren von Anwendungen konzentrieren.
In dieser Anleitung wird gezeigt, wie Sie eine einfache Gradio-Webanwendung erstellen und in Cloud Run bereitstellen.
Lerninhalte
- So erstellen Sie eine „Hello World“-Anwendung in Gradio.
- Testen der Anwendung durch Ausführen der Gradio-App vor der Bereitstellung.
- Cloud Buildpacks und wie das Vorhandensein von
gradio
in einemrequirements.txt
es ermöglicht, dass kein Dockerfile erforderlich ist. - So stellen Sie eine Gradio-Anwendung in Cloud Run bereit.
2. Einrichtung und Anforderungen
Einrichtung der Umgebung im eigenen Tempo
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eins erstellen.
- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und kann nach dem Festlegen nicht mehr geändert werden. In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_ID
angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am Programm Kostenlose Testversion mit einem Guthaben von 300$ teilnehmen.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in dieser Anleitung Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren.
Wenn Sie Cloud Shell zum ersten Mal starten, wird ein Zwischenbildschirm mit einer Beschreibung angezeigt. Klicken Sie in diesem Fall auf Weiter.
Die Bereitstellung und Verbindung mit Cloud Shell sollte nur wenige Augenblicke dauern.
Auf dieser virtuellen Maschine sind alle erforderlichen Entwicklertools installiert. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Ein Großteil, wenn nicht sogar die gesamte Arbeit in diesem Codelab kann mit einem Browser erledigt werden.
Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie authentifiziert sind und das Projekt auf Ihre Projekt-ID eingestellt ist.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list
Befehlsausgabe
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:
gcloud config set project <PROJECT_ID>
Befehlsausgabe
Updated property [core/project].
3. APIs aktivieren
Aktivieren Sie in Cloud Shell die Artifact Registry API, die Cloud Build API und die Cloud Run API:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com
Wenn der Vorgang erfolgreich war, erhalten Sie eine Meldung, die ungefähr so aussieht:
Operation "operations/..." finished successfully.
Jetzt können Sie mit der Arbeit beginnen und Ihre Bewerbung schreiben.
4. Anwendung schreiben
In diesem Schritt erstellen Sie eine einfache Gradio-Python-Anwendung, die auf HTTP-Anfragen reagiert.
Arbeitsverzeichnis
Erstellen Sie mit Cloud Shell ein Arbeitsverzeichnis mit dem Namen helloworld-gradio
und wechseln Sie zu diesem Verzeichnis:
mkdir ~/helloworld-gradio && cd ~/helloworld-gradio
app.py
Erstellen Sie eine Datei mit dem Namen app.py
:
touch app.py
Bearbeiten Sie die Datei mit Ihrem bevorzugten Befehlszeileneditor (nano, vim oder emacs) oder indem Sie auf die Schaltfläche „Cloud Shell Editor“ klicken:
Wenn Sie die Datei direkt mit dem Cloud Shell-Editor bearbeiten möchten, verwenden Sie diesen Befehl:
cloudshell edit app.py
app.py
import gradio as gr
def hello(name, intensity):
"""Return a friendly greeting."""
return "Hello " + name + "!" * int(intensity)
demo = gr.Interface(
fn=hello,
inputs=["text", "slider"],
outputs=["text"],
title="Hello World 👋🌎",
description=("Type your name below and hit 'Submit', and try the slider to "
"make the greeting louder!"),
theme="soft",
flagging_mode="never",
)
demo.launch(server_port=8080)
Mit diesem Code wird ein einfacher Webdienst erstellt, der auf HTTP GET-Anfragen mit einer freundlichen Nachricht antwortet.
requirements.txt
Fügen Sie eine Datei mit dem Namen requirements.txt
hinzu, um die Abhängigkeiten zu definieren:
touch requirements.txt
Wenn Sie die Datei direkt mit dem Cloud Shell-Editor bearbeiten möchten, verwenden Sie diesen Befehl:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/gradio
gradio==5.39.0
Die Gradio-Anwendung ist bereit für die Bereitstellung, aber wir testen sie zuerst…
5. Anwendung testen
Verwenden Sie zum Testen der Anwendung uv, den extrem schnellen Paket- und Projektmanager für Python, der in Cloud Shell vorinstalliert ist.
Erstellen Sie zum Testen der Anwendung eine virtuelle Umgebung:
uv venv
Installieren Sie die Abhängigkeiten:
uv pip install -r requirements.txt
Starten Sie die Anwendung im Entwicklermodus mit der Gradio-Befehlszeile und uv run gradio app.py
:
uv run gradio app.py
Standardmäßig wird dadurch die Funktion „Hot Reloading“ aktiviert, mit der die Benutzeroberfläche in Ihrem Browser automatisch aktualisiert wird, wenn Sie Änderungen an Ihrem Code speichern.
In den Logs wird angezeigt, dass die Gradio-App ausgeführt wird:
Watching: '/home/user/helloworld-gradio' * Running on local URL: http://127.0.0.1:8080 * To create a public link, set `share=True` in `launch()`.
Klicken Sie im Cloud Shell-Fenster auf das Symbol Web Preview
und wählen Sie Preview on port 8080
aus:
Es sollte sich jetzt ein Browserfenster öffnen, in dem der Titel Hello World 👋🌎
angezeigt wird.
Geben Sie Ihren Namen in das Textfeld auf der linken Seite ein und klicken Sie auf die Schaltfläche „Senden“.
Experimentieren Sie mit dem Schieberegler und klicken Sie auf die Schaltfläche „Senden“, um eine noch lautere Begrüßung zu hören.
Wenn Sie fertig sind, kehren Sie zur Haupt-Cloud Shell-Sitzung zurück und beenden Sie die Gradio-App mit CTRL+C
.
Die Anwendung funktioniert wie erwartet. Es ist an der Zeit, sie bereitzustellen.
6. In Cloud Run bereitstellen
Cloud Run ist regional. Die Infrastruktur, in der die Cloud Run-Dienste ausgeführt werden, befindet sich demnach in einer bestimmten Region. Aufgrund der Verwaltung durch Google sind die Anwendungen in allen Zonen innerhalb dieser Region redundant verfügbar. Definieren Sie die Region, die Sie für die Bereitstellung verwenden möchten, z. B.:
REGION=europe-west1
Achten Sie darauf, dass Sie sich noch im Arbeitsverzeichnis befinden:
ls
Dort sollten die folgenden Dateien aufgeführt sein:
app.py requirements.txt
Erstellen Sie vor der Bereitstellung eine .gcloudignore
-Datei mit .venv/
. Dadurch wird verhindert, dass die Cloud Run-Bereitstellung die virtuelle Umgebung enthält, die während der lokalen Tests aus uv
erstellt wurde.
Erstellen Sie die .gcloudignore
mit dem folgenden Befehl:
echo ".venv/" > .gcloudignore
Stellen Sie die Anwendung für Cloud Run bereit:
gcloud run deploy helloworld-gradio \
--source . \
--region $REGION \
--allow-unauthenticated
- Mit der Option
--allow-unauthenticated
wird der Dienst öffentlich verfügbar. Verwenden Sie stattdessen--no-allow-unauthenticated
, um nicht authentifizierte Anfragen zu vermeiden.
Beim ersten Mal werden Sie aufgefordert, ein Artifact Registry-Repository zu erstellen. Tippen Sie zur Bestätigung auf Enter
:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
Dadurch wird das Hochladen Ihres Quellcodes in das Artifact Registry-Repository und das Erstellen Ihres Container-Images gestartet:
Building using Buildpacks and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
Warten Sie dann einige Sekunden, bis die Bereitstellung abgeschlossen ist. Wenn die Bereitstellung erfolgreich war, wird in der Befehlszeile die Dienst-URL angezeigt:
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
Sie können die Dienst-URL mit diesem Befehl abrufen:
SERVICE_URL=$( \
gcloud run services describe helloworld-gradio \
--region $REGION \
--format "value(status.address.url)" \
)
echo $SERVICE_URL
Es sollte in etwa Folgendes angezeigt werden:
https://helloworld-gradio-PROJECTHASH-REGIONID.a.run.app
Sie können Ihre Anwendung jetzt verwenden, indem Sie die Dienst-URL in einem Webbrowser öffnen:
Glückwunsch! Sie haben eine Anwendung in Cloud Run bereitgestellt. Cloud Run skaliert das Container-Image automatisch horizontal, damit die empfangenen Anfragen bearbeitet werden können, und skaliert es wieder herunter, wenn der Bedarf sinkt. Sie zahlen nur für die CPU-, Arbeitsspeicher- und Netzwerkressourcen, die während der Anfrageverarbeitung für diesen Cloud Run-Dienst verbraucht werden.
7. Bereinigen
Während für Cloud Run keine Kosten anfallen, wenn der Dienst nicht verwendet wird, wird Ihnen dennoch das Speichern des Container-Images in Artifact Registry möglicherweise in Rechnung gestellt. Sie können Ihr Repository oder Ihr Cloud-Projekt löschen, um Kosten zu vermeiden. Durch das Löschen des Cloud-Projekts wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.
So löschen Sie Ihr Container-Image-Repository:
gcloud artifacts repositories delete cloud-run-source-deploy \
--location $REGION
So löschen Sie Ihren Cloud Run-Dienst:
gcloud run services delete helloworld-gradio \
--region $REGION
So löschen Sie Ihr Google Cloud-Projekt:
- Rufen Sie Ihre aktuelle Projekt-ID ab:
PROJECT_ID=$(gcloud config get-value core/project)
- Prüfen Sie, ob es sich um das Projekt handelt, das Sie löschen möchten:
echo $PROJECT_ID
- Projekt löschen
gcloud projects delete $PROJECT_ID
8. Glückwunsch!
Sie haben eine „Hello World“-Gradio-Webanwendung erstellt und in Cloud Run bereitgestellt.
Behandelte Themen
- So erstellen Sie eine „Hello World“-Anwendung in Gradio.
- Testen der Anwendung durch Ausführen der Gradio-App vor der Bereitstellung.
- Cloud Buildpacks und wie das Vorhandensein von
gradio
in einemrequirements.txt
es ermöglicht, dass kein Dockerfile erforderlich ist. - Gradio-Anwendung in Cloud Run bereitstellen
Weitere Informationen
- Cloud Run-Dokumentation
- Dev to Prod in Three Easy Steps with Cloud Run
- Führen Sie die Anleitung unter Django in Cloud Run aus, um eine Cloud SQL-Datenbank zu erstellen, Anmeldedaten mit Secret Manager zu verwalten und Django bereitzustellen.
- Weitere Cloud Run-Codelabs