Die Go-Laufzeit ist der Softwarestack, der für die Installation Ihres Anwendungscodes und der Abhängigkeiten sowie für die Ausführung dieser Anwendung in der flexiblen Umgebung verantwortlich ist.
Go-Versionen
Go 1.22 verwendet Buildpacks. Eine vollständige Liste der unterstützten Go-Versionen und deren entsprechende Ubuntu-Version finden Sie im Zeitplan für den Laufzeitsupport.
Um eine unterstützte Go-Version zu verwenden, müssen Sie:
Installieren Sie die
gcloud CLI
-Version 420.0.0 oder höher. Sie können die Befehlszeilentools mit dem Befehlgcloud components update
aktualisieren. Zum Aufrufen der installierten Version können Sie den Befehlgcloud version
ausführen.Go empfiehlt die Verwendung einer
go.mod
-Datei zum Verwalten von Abhängigkeiten. Fügen Sie einego.mod
-Datei in denselben Ordner wie dieapp.yaml
-Datei ein, um Abhängigkeiten während der Bereitstellung zu installieren.Die Ordnerstruktur der Anwendung mit
go.mod
muss beispielsweise Folgendes darstellen:<application-root>/ --> app.yaml --> go.mod --> Other source files used in your application.
Fügen Sie die Einstellungen
runtime_config
undoperating_system
in die Dateiapp.yaml
ein, um ein Betriebssystem anzugeben.Optional: Sie können eine Laufzeitversion angeben, indem Sie die Einstellung
runtime_version
in Ihreapp.yaml
aufnehmen. Standardmäßig wird die neueste Go-Version verwendet, wenn die Einstellungruntime_version
nicht angegeben ist.
Beispiele
So geben Sie Go 1.22 auf Ubuntu 22 an:
runtime: go env: flex runtime_config: operating_system: "ubuntu22" runtime_version: "1.22"
So geben Sie die neueste unterstützte Go-Version unter Ubuntu 22 an:
runtime: go env: flex runtime_config: operating_system: "ubuntu22"
Ihre Anwendung verwendet die neueste stabile Version der Version, die in der Datei app.yaml
angegeben ist. App Engine wird automatisch auf neue Patchüberarbeitungen aktualisiert. Die Aktualisierung der Hauptversion erfolgt jedoch nicht automatisch.
Das bedeutet beispielsweise, dass eine mit Go 1.18.10 und höher erstellte Anwendung automatisch auf Go 1.18.11 aktualisiert wird, aber nicht auf die Hauptversion Go 1.19.
Wenn Sie Go 1.22 in Ihrer app.yaml
-Datei auswählen, wird die aktuelle patch
-Version von Go 1.22 ausgeführt.
runtime: go
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "1.22"
Weitere Informationen finden Sie in der Referenz app.yaml
.
Vorherige Laufzeitversionen
Wenn Sie Go Version 1.15 und früher verwenden möchten, geben Sie eine Version in der Einstellung runtime
im Format go1.x
in Ihrem app.yaml
-Datei an. Beispiel:
runtime: go1.14 env: flex
Wenn Sie keine Version angeben, wird automatisch die Standardversion von go1.11
ausgewählt.
Ihre Anwendung verwendet die neueste stabile Version der Version, die in der Datei app.yaml
angegeben ist. App Engine wird automatisch auf neue Patchüberarbeitungen aktualisiert. Die Aktualisierung der Hauptversion erfolgt jedoch nicht automatisch.
Das bedeutet beispielsweise, dass eine mit Go 1.14.10 und höher erstellte Anwendung automatisch auf Go 1.14.11 aktualisiert wird, aber nicht auf die Hauptversion Go 1.15.
Wenn Sie die Go-Laufzeitversion go1.15
in Ihrer app.yaml
-Datei auswählen, wird die aktuelle Version 1.15 verfügbar, z. B. 1.15.15.
runtime: go1.15 env: flex
Unterstützung für andere Go-Laufzeiten
Wenn Sie eine Go-Version verwenden müssen, die nicht unterstützt wird, können Sie eine benutzerdefinierte Laufzeit erstellen und ein gültiges Basis-Image auswählen mit der Go-Version die Sie benötigen.
Informationen zu von Google bereitgestellten Basis-Images oder Docker-Go-Basis-Images finden Sie unter Benutzerdefinierte Laufzeiten erstellen.
Pakete importieren
Wenn Sie Ihre App in App Engine bereitstellen, wird Ihr Code kompiliert. Wenn Sie den Bereitstellungsbefehl ausführen, werden die Abhängigkeiten Ihrer App von Ihrem lokalen GOPATH
abgerufen und an den Build-Server gesendet. Fehlende Abhängigkeiten, wie z. B. Bibliotheken von Drittanbietern, führen zu Build-Fehlern.
Sie sollten Ihre App vor der Bereitstellung lokal testen, um Build-Fehler zu vermeiden und sicherzustellen, dass alle Abhängigkeiten Ihrer App mit Ihrem Code bereitgestellt werden.
Laufzeit erweitern
Anleitungen zum Erweitern und Anpassen der Go-Laufzeit finden Sie im Go-Laufzeit-Builder auf GitHub.
Metadatenserver
Jede Instanz der Anwendung kann den Compute Engine-Metadatenserver verwenden, um Informationen über die Instanz abzufragen, einschließlich Hostname, externer IP-Adresse, Instanz-ID, benutzerdefinierter Metadaten und Dienstkontoinformationen. Sie können in App Engine nicht für jede einzelne Instanz benutzerdefinierte Metadaten festlegen. Sie haben aber die Möglichkeit, projektweite benutzerdefinierte Metadaten anzugeben und aus den App Engine- und Compute Engine-Instanzen zu lesen.
Verwenden Sie das Paket cloud.google.com/go/compute/metadata
für den Zugriff auf den Metadatenserver.