Go-Laufzeit

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.

  • Die Versionen 1.18 und höher werden mit Buildpacks erstellt. Dazu müssen Sie ein Betriebssystem in der app.yaml-Datei auswählen. Wenn Sie beispielsweise Go 1.22 verwenden möchten, müssen Sie Ubuntu 22 als Betriebssystem angeben.

  • Version 1.15 und früher werden mit Docker erstellt.

Eine vollständige Liste der unterstützten Go-Versionen und deren entsprechende Ubuntu-Version finden Sie im Zeitplan für den Laufzeitsupport.

Go-Version auswählen

Neue Laufzeitversionen

Für Go-LaufzeitVersion 1.18 und höher müssen Sie runtime_config undoperating_system Einstellungen imapp.yaml um ein Betriebssystem anzugeben.

Zur Verwendung der neuen Laufzeiten müssen Sie die gcloud CLI-Version 420.0.0 oder höher installieren. Sie können die Befehlszeilentools mit dem Befehl gcloud components update aktualisieren. Zum Aufrufen der installierten Version können Sie den Befehl gcloud version ausführen.

Go empfiehlt die Verwendung einer go.mod-Datei zum Verwalten von Abhängigkeiten. Fügen Sie die Datei go.mod in denselben Ordner wie die Datei app.yaml 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.

Optional: Sie können eine Laufzeitversion angeben, indem Sie die Einstellung runtime_version in Ihre app.yaml aufnehmen. Standardmäßig wird die neueste Go-Version verwendet, wenn die Einstellung runtime_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 bereitgestellte Anwendung später 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 neueste 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

Für Go Version 1.15 und früher geben Sie eine Version im Format go1.x in der Konfigurationsdatei app.yaml als runtime: go1.x 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 bereitgestellte Anwendung später 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 neueste Version 1.15 verfügbar, z. B. 1.15.15.

  runtime: go1.15
  env: flex

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.