Abhängigkeiten angeben

Anwendungen, die in der Go 1.11-Standardlaufzeit ausgeführt werden, können jedes mit Linux/amd64 kompatible Paket verwenden.

Go-Module verwenden

Wir empfehlen die Verwendung von Go-Modulen zur Verwaltung von Abhängigkeiten in Ihrer Go-Anwendung. Sie können jedoch weiterhin den älteren GoPATH-Modus verwenden, wenn Sie noch nicht für die Migration auf Go-Module bereit sind.

Wenn Sie die Anwendung bereitstellen, verwendet App Engine den Befehl go build zum Erstellen der Anwendung und verhält sich entsprechend wie Go selbst. Führen Sie folgende Schritte in Ihrer Entwicklungsumgebung aus, um sicherzustellen, dass Ihre Anwendung den modulesensitiven Modus verwendet:

  • Erstellen Sie die go.mod-Datei Ihres Moduls im gleichen Verzeichnis wie Ihre app.yaml-Datei. App Engine durchsucht das aktuelle Verzeichnis und anschließend die übergeordneten Verzeichnisse, bis eine go.mod-Datei gefunden wird.

    Wenn App Engine keine go.mod-Datei findet, wird der GOPATH-Modus ausgeführt.

  • Wenn Sie die Umgebungsvariable GO111MODULE festlegen, achten Sie darauf, dass der Wert der Variablen den modulbasierten Modus aktiviert. Wenn Sie Ihre Anwendung bereitstellen, prüft die App Engine Ihre Umgebung auf GO111MODULE und passt das Verhalten von Go selbst an. App Engine wendet die Einstellung der Variablen GO111MODULE nur an, wenn Sie eine go.mod-Datei für Ihre Anwendung hinzugefügt haben.

  • Platzieren Sie Ihr Anwendungsverzeichnis nicht in oder unter $GOPATH/src. Befindet sich Ihre Anwendung an einer beliebigen Stelle in der Verzeichnisstruktur $GOPATH/src, so nutzt App Engine den GOPATH-Modus, auch wenn Sie eine go.mod-Datei für Ihre Anwendung definiert haben.

Private Abhängigkeiten verwenden

App Engine kann die privaten Abhängigkeiten nicht während des Build-Prozesses herunterladen, daher müssen Sie diese bei der Bereitstellung in Ihren Anwendungscode einbinden.

Sie müssen die Anweisung replace in der Datei go.mod verwenden, um private Abhängigkeiten zu deklarieren. Im folgenden Beispiel wird davon ausgegangen, dass sich Ihre Anwendung im Verzeichnis /myapp/ befindet:

  1. Rufen Sie das Anwendungsverzeichnis auf:

    cd /myapp
    
  2. Erstellen Sie ein Verzeichnis mit den privaten Abhängigkeiten:

    mkdir private
    

    Die privaten Abhängigkeiten müssen sich im Verzeichnis private befinden. Eine Möglichkeit ist die Erstellung eines Symlinks:

    mkdir private/private.example.com
    ln -s /path/to/private.example.com/foo private/private.example.com/foo
    
  3. Aktualisieren Sie die Datei go.mod, um die Anweisung replace zur Verwendung des Verzeichnisses private für die Abhängigkeiten zu verwenden:

    go mod edit -replace=private.example.com/foo=./private/private.example.com/foo
    

    Ihre go.mod-Datei sollte jetzt wie folgt aussehen:

    Finale go.mod-Datei

    module private.example.com/myapp
    
    require private.example.com/foo v1.2.3
    
    replace private.example.com/foo => ./private/private.example.com/foo
    

    Original go.mod-Datei:

    module private.example.com/myapp
    
    require private.example.com/foo v1.2.3
    
  4. Ändern Sie nicht, wie Sie Ihr privates Paket importieren und verwenden. Ihre import - Anweisung sollte wie folgt aussehen:

    import "private.example.com/foo"
    
  5. Schließen Sie die privaten Abhängigkeiten in die Bereitstellung ein, indem Sie Ihre Anwendung bereitstellen:

    gcloud app deploy