Auf dieser Seite erfahren Sie, wie Sie eine einfache "Hello World"-Anwendung erstellen, sie in ein Container-Image verpacken, das Container-Image in Container Registry hochladen und dieses anschließend für Cloud Run bereitstellen. Es wird gezeigt, wie Sie das Beispiel mit verschiedenen Sprachen ausführen können. Sie können es jedoch auch mit Sprachen ausführen, die hier nicht behandelt werden.
Diese Kurzanleitung ist in einem interaktiven Anleitungsformat mit Cloud Shell verfügbar:
Alternativ können Sie dieser Kurzanleitung mit einem Demokonto auf Qwiklabs folgen.
Hinweis
-
Melden Sie sich bei Ihrem Google-Konto an.
Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.
- Installieren und initialisieren Sie das Cloud SDK.
Beispielanwendung schreiben
Klicken Sie auf den Tab für Ihre Sprache, um Anweisungen zum Erstellen einer "Hello World"-Beispielanwendung zu erhalten, die in Cloud Run ausgeführt wird:
Go
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld
und ersetzen Sie das aktuelle Verzeichnis durch dieses Verzeichnis:mkdir helloworld cd helloworld
Initialisieren Sie eine
go.mod
-Datei, um das Go-Modul zu deklarieren:Erstellen Sie eine neue Datei mit dem Namen
main.go
und fügen Sie den folgenden Code in diese ein:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Node.js
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld
und ersetzen Sie das aktuelle Verzeichnis durch dieses Verzeichnis:mkdir helloworld cd helloworld
Erstellen Sie eine
package.json
-Datei mit folgendem Inhalt:Erstellen Sie im selben Verzeichnis eine
index.js
-Datei und kopieren Sie die folgenden Zeilen hinein:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Python
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld
und ersetzen Sie das aktuelle Verzeichnis durch dieses Verzeichnis:mkdir helloworld cd helloworld
Erstellen Sie eine Datei mit dem Namen
main.py
und fügen Sie den folgenden Code in diese ein:Dieser Code antwortet auf Anfragen mit der Begrüßung „Hello World“. Die HTTP-Verarbeitung erfolgt über einen Gunicorn-Webserver im Container. Wenn dieser Code direkt für die lokale Verwendung aufgerufen wird, erstellt er einen einfachen Webserver, der den von der Umgebungsvariable
PORT
definierten Port überwacht.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Java
Erstellen Sie eine Spring Boot-Anwendung.
Erstellen Sie über die Konsole mit den Befehlen "cURL" und "unzip" ein neues, leeres Webprojekt:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d javaVersion=1.8 \ -d bootVersion=2.3.3.RELEASE \ -d name=helloworld \ -d artifactId=helloworld \ -d baseDir=helloworld \ -o helloworld.zip unzip helloworld.zip cd helloworld
Dadurch wird ein Spring Boot-Projekt erstellt.
Verwenden Sie zum Erstellen des Projekts eine der folgenden Befehlszeilen oder optional Spring Initializr (Konfiguration vorab geladen), um den vorstehenden cURL-Befehl in Microsoft Windows nutzen zu können:
Aktualisieren Sie die Klasse
HelloworldApplication
insrc/main/java/com/example/helloworld/HelloworldApplication.java
. Fügen Sie dazu einen@RestController
ein, um die/
-Zuordnung zu verarbeiten. Fügen Sie außerdem ein@Value
-Feld hinzu, um die-Umgebungsvariable „NAME“ bereitzustellen:Legen Sie den Serverport fest, der durch die in
application.properties
durch die Umgebungsvariable „PORT“ definiert werden soll:
Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable PORT
definierten Port überwacht.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Wenn Sie Java mit anderen Frameworks für Cloud Run bereitstellen möchten, sehen Sie sich die Knative-Beispiele für Spark und Vert.x an.
C#
Installieren Sie das .NET Core SDK 3.1. Dies ist nur erforderlich, damit wir im nächsten Schritt das neue Webprojekt erstellen können; das weiter unten beschriebene Dockerfile lädt dann später alle Abhängigkeiten in den Container.
Erstellen Sie über die Konsole mit dem Befehl "dotnet" ein neues, leeres Webprojekt:
dotnet new web -o helloworld-csharp
Ändern Sie das Verzeichnis in
helloworld-csharp
.Aktualisieren Sie die
CreateHostBuilder
-Definition inProgram.cs
, um den Port zu überwachen, der durch die UmgebungsvariablePORT
definiert ist:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.Erstellen Sie eine Datei mit dem Namen
Startup.cs
und fügen Sie den folgenden Code in diese ein:Dieser Code antwortet auf Anfragen mit der Begrüßung „Hello World“.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
C++
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-cpp
und ersetzen Sie das aktuelle Verzeichnis durch dieses Verzeichnis:mkdir helloworld-cpp cd helloworld-cpp
Erstellen Sie eine neue Datei mit dem Namen
CMakeLists.txt
und fügen Sie dort den folgenden Code ein:Erstellen Sie eine neue Datei mit dem Namen
cloud_run_hello.cpp
und fügen Sie dort den folgenden Code ein:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
PHP
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-php
und ersetzen Sie das aktuelle Verzeichnis durch dieses Verzeichnis:mkdir helloworld-php cd helloworld-php
Erstellen Sie eine Datei mit dem Namen
index.php
und fügen Sie den folgenden Code in diese ein:Dieser Code antwortet auf Anfragen mit der Begrüßung „Hello World“. Die HTTP-Verarbeitung erfolgt über einen Apache-Webserver im Container.
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Ruby
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld
und ersetzen Sie das aktuelle Verzeichnis durch dieses Verzeichnis:mkdir helloworld cd helloworld
Erstellen Sie eine Datei mit dem Namen
app.rb
und fügen Sie den folgenden Code in diese ein:Mit diesem Code wird ein einfacher Webserver erstellt, der den von der Umgebungsvariable
PORT
definierten Port überwacht.Erstellen Sie eine Datei namens
Gemfile
und kopieren Sie Folgendes hinein:Wenn Bundler 2.0 oder höher nicht installiert ist, installieren Sie Bundler.
Erstellen Sie mit diesem Befehl eine
Gemfile.lock
-Datei:bundle install
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Shell
Erstellen Sie ein neues Verzeichnis mit dem Namen
helloworld-shell
und ersetzen Sie das aktuelle Verzeichnis durch dieses Verzeichnis:mkdir helloworld-shell cd helloworld-shell
Erstellen Sie eine
script.sh
-Datei mit folgendem Inhalt:In diesem Beispiel wird das Shell-Skript mithilfe eines kleinen Go-Programms, das einen einfachen Webserver startet und den durch die Umgebungsvariable
PORT
definierten Port überwacht, für alle eingehenden Anfragen ausgeführt.Erstellen Sie eine
invoke.go
-Datei mit folgendem Inhalt:
Die Anwendung ist jetzt fertig und kann in einen Container verlagert und dann in Container Registry hochgeladen werden.
Andere
Cloud Run unterstützt die meisten Sprachen. Einfache Beispiele für Sprachen, die in dieser Tabelle nicht aufgeführt sind, finden Sie unter folgenden Links:
Überspringen Sie bei diesen Beispielen jedoch die Informationen zu service.yaml
und Docker Hub, da diese Datei und diese Bibliothek in Cloud Run nicht verwendet werden.
Anwendung containerisieren und in Container Registry hochladen
Erstellen Sie zum Containerisieren der Beispielanwendung in dem Verzeichnis, in dem sich die Quelldateien befinden, eine neue Datei namens Dockerfile
und kopieren Sie den folgenden Inhalt in diese:
Go
Fügen Sie die Datei .dockerignore
hinzu, um Dateien aus Ihrem Container-Image auszuschließen.
Node.js
Fügen Sie die Datei .dockerignore
hinzu, um Dateien aus Ihrem Container-Image auszuschließen.
Python
Das Python-Dockerfile startet einen Gunicorn-Webserver, der den von der Umgebungsvariable PORT
definierten Port überwacht:
Fügen Sie die Datei .dockerignore
hinzu, um Dateien aus Ihrem Container-Image auszuschließen.
Java
Fügen Sie die Datei .dockerignore
hinzu, um Dateien aus Ihrem Container-Image auszuschließen.
C#
Wenn Sie Dateien aus lokalen dotnet
-Build-Vorgängen vom Hochladen in Cloud Build ausschließen möchten, fügen Sie eine .gcloudignore
-Datei im selben Verzeichnis hinzu, in dem sich die Quelldateien der Beispielanwendung befinden:
Wenn sich diese Zeilen in einer .gitignore
-Datei befinden, können Sie diesen Schritt überspringen, da .gitignore
eine Standardquelle für die .gcloudignore
-Konfiguration ist.
Kopieren Sie diese Zeilen in eine .dockerignore
-Datei für lokale Container-Builds mit der docker
-Befehlszeile.
C++
Das C++-Dockerfile beginnt mit der Überwachung der Anwendung an dem Port, der mit der Umgebungsvariable PORT
definiert wurde:
PHP
Das PHP-Dockerfile startet einen Apache-Webserver, der den von der Umgebungsvariablen PORT
definierten Port überwacht:
Fügen Sie die Datei .dockerignore
hinzu, um Dateien aus Ihrem Container-Image auszuschließen.
Ruby
Fügen Sie die Datei .dockerignore
hinzu, um Dateien aus Ihrem Container-Image auszuschließen.
Shell
Andere
Cloud Run unterstützt die meisten Sprachen. Beispiel-Dockerfiles für Sprachen, die in dieser Tabelle nicht aufgeführt sind, finden Sie unter folgenden Links:
Überspringen Sie bei diesen Beispielen jedoch die Informationen zu service.yaml
und Docker Hub, da diese Datei und diese Bibliothek in Cloud Run nicht verwendet werden.
Erstellen Sie das Container-Image mit Cloud Build. Dazu führen Sie folgenden Befehl in dem Verzeichnis aus, in dem sich das Dockerfile befindet:
gcloud builds submit --tag gcr.io/PROJECT-ID/helloworld
Dabei ist PROJECT-ID die GCP-Projekt-ID.
Sie können sie abrufen, indem Sie gcloud config get-value project
ausführen.
Bei Erfolg wird eine SUCCESS-Nachricht mit dem Image-Namen (gcr.io/PROJECT-ID/helloworld
) angezeigt. Das Image wird in Container Registry gespeichert und kann bei Bedarf wiederverwendet werden.
In Cloud Run bereitstellen
So stellen Sie das Container-Image bereit:
Stellen Sie es mit dem folgenden Befehl bereit:
gcloud run deploy --image gcr.io/PROJECT-ID/helloworld --platform managed
Ersetzen Sie PROJECT-ID durch Ihre GCP-Projekt-ID. Sie können Ihre Projekt-ID aufrufen, indem Sie den Befehl
gcloud config get-value project
ausführen.- Sie werden zur Eingabe des Dienstnamens aufgefordert. Drücken Sie die Eingabetaste, um den Standardnamen
helloworld
zu akzeptieren. - Sie werden zur Eingabe der Region aufgefordert: Wählen Sie die Region Ihrer Wahl aus, zum Beispiel
us-central1
. - Sie werden aufgefordert, nicht authentifizierte Aufrufe zuzulassen: Antworten Sie mit
y
.
Warten Sie dann einige Sekunden, bis die Bereitstellung abgeschlossen ist. Bei Erfolg wird in der Befehlszeile die Dienst-URL angezeigt.
- Sie werden zur Eingabe des Dienstnamens aufgefordert. Drücken Sie die Eingabetaste, um den Standardnamen
Rufen Sie den bereitgestellten Container auf. Dazu öffnen Sie in einem Webbrowser die Dienst-URL.
Cloud Run-Standorte
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.
Bei der Auswahl der Region, in der Ihre Cloud Run-Dienste ausgeführt werden, ist vorrangig, dass die Anforderungen hinsichtlich Latenz, Verfügbarkeit oder Langlebigkeit erfüllt werden.
Sie können im Allgemeinen die Region auswählen, die Ihren Nutzern am nächsten liegt, aber Sie sollten den Standort der anderen Google Cloud-Produkte berücksichtigen, die von Ihrem Cloud Run-Dienst verwendet werden.
Die gemeinsame Nutzung von Google Cloud-Produkten an mehreren Standorten kann sich auf die Latenz und die Kosten des Dienstes auswirken.
Cloud Run ist in diesen Regionen verfügbar:
Unterliegt Preisstufe 1
asia-east1
(Taiwan)asia-northeast1
(Tokio)asia-northeast2
(Osaka)europe-north1
(Finnland)europe-west1
(Belgien)europe-west4
(Niederlande)us-central1
(Iowa)us-east1
(South Carolina)us-east4
(Northern Virginia)us-west1
(Oregon)
Unterliegt Preisstufe 2
asia-east2
(Hongkong)asia-northeast3
(Seoul, Südkorea)asia-southeast1
(Singapur)asia-southeast2
(Jakarta)asia-south1
(Mumbai, Indien)australia-southeast1
(Sydney)europe-west2
(London, Vereinigtes Königreich)europe-west3
(Frankfurt, Deutschland)europe-west6
(Zürich, Schweiz)northamerica-northeast1
(Montreal)southamerica-east1
(São Paulo, Brasilien)
Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie die Region in der Cloud Console im Cloud Run-Dashboard aufrufen.
Das wars! Sie haben eine in einem Container-Image verpackte 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. Es fallen nur Kosten für die CPU-, Arbeitsspeicher- und Netzwerkressourcen an, die während der Anfrageverarbeitung verbraucht werden.
Clean-up
Testprojekt entfernen
Während für Cloud Run keine Kosten anfallen, wenn der Dienst nicht verwendet wird, wird Ihnen dennoch das Speichern des Container-Images in Container Registry möglicherweise in Rechnung gestellt. Sie können Ihr Image löschen oder Ihr Cloudprojekt löschen, um Kosten zu vermeiden. Durch das Löschen des Cloudprojekts wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.
- Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Weitere Informationen
Weitere Informationen dazu, wie Sie einen Container aus Quellcode erstellen und diesen mithilfe von Push in Container Registry übertragen, finden Sie unter: