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.

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 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 eine go.mod-Datei in denselben Ordner wie die app.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 und operating_system in die Datei app.yaml ein, um ein Betriebssystem anzugeben.

  • 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 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.