Abhängigkeiten angeben

Sie können jedes beliebige linux/amd64-kompatible Paket mit Instanzen verwenden, die in der flexiblen App Engine-Umgebung laufen. In dieser Anleitung wird davon ausgegangen, dass Sie die Pakete go get verwenden, um die Pakete direkt aus unterstützten Repositories wie GitHub, Bitbucket, LaunchPad usw. abzurufen.

Ab Go-Version 1.22:

  • Sie können go get nicht außerhalb eines Moduls im alten GOPATH-Modus (GO111MODULE=off) verwenden. Weitere Informationen finden Sie unter Tools.

  • In Go wird empfohlen, eine go.mod-Datei zum Verwalten von Abhängigkeiten zu verwenden. Wenn Sie Abhängigkeiten während des Deployments installieren möchten, fügen Sie eine go.mod-Datei in denselben Ordner wie die app.yaml-Datei ein. Weitere Informationen zu Go-Versionen und zum Verwalten von Abhängigkeiten für Anbieterverzeichnisse finden Sie unter GOPATH und Module.

Abhängigkeiten deklarieren und verwalten

Go-Anwendungen sind in Paketen organisiert, die die Verzeichnisstruktur Ihrer Quelldateien widerspiegeln. Wenn Sie eine Importanweisung verwenden, werden die relativen Pfade im Import interpretiert. Gültige Importpfade sind vollständig qualifizierte Pfade, die sich auf das Unterverzeichnis src aller Verzeichnisse beziehen, die im GOPATH angegeben sind.

Angenommen, Sie definieren in einer Beispiel-App Folgendes:

  • GOPATH-Modul:

     export GOPATH=/home/fred/go.
    
  • src1-1.go-Datei:

    import "foo/bar"
    
  • Die gcloud CLI sucht beim Ausführen oder Bereitstellen der App nach dem foo/bar-Paket an diesem Speicherort: /home/fred/go/src/foo/bar.

Achten Sie beim Einfügen Ihrer Paketquellen in GOPATH darauf, dass sich der Quellcode nicht im Anwendungsverzeichnis mit der Datei app.yaml oder auf einer tieferen Ebene befindet. In diesem Fall können schwer zu bemerkende Probleme auftreten. Ein Paket könnte zweimal geladen werden: einmal für den Pfad relativ zum Verzeichnis eines Dienstes und einmal für den vollständig qualifizierten Pfad. Um Probleme zu vermeiden durchsucht die gcloud CLI sowohl das Verzeichnis als auch das GOPATH und meldet einen Fehler, wenn ein Konflikt erkannt wird.

Für optimale Ergebnisse empfehlen wir Folgendes:

  • Erstellen Sie im Verzeichnis Ihrer Anwendung ein eigenes Verzeichnis für jeden Dienst
  • Das Verzeichnis jedes Dienstes sollte die Datei app.yaml des Dienstes und eine oder mehrere .go-Dateien enthalten
  • Fügen Sie in das Verzeichnis eines Dienstes keine Unterverzeichnisse ein.
  • GOPATH sollte ein Verzeichnis angeben, das sich außerhalb des Verzeichnisses Ihrer Anwendung befindet und alle Abhängigkeiten enthält, die von Ihrer Anwendung importiert werden

Erforderliche Pakete herunterladen

Sie können Pakete mit dem Befehl go get herunterladen. So laden Sie beispielsweise packagename von GitHub my_repo herunter:

go get github.com/my_repo/packagename

Auf App Engine bereitstellen

Sie müssen die benötigten Bibliotheken zusammen mit Ihrem Anwendungscode bereitstellen, um Ihre Anwendung in App Engine bereitstellen zu können. Ausführliche Informationen finden Sie unter Anwendung testen und bereitstellen.