Specifica delle dipendenze

Puoi utilizzare qualsiasi pacchetto compatibile con linux/amd64 con le istanze in esecuzione nell'ambiente flessibile di App Engine. Queste istruzioni presuppongono che tu stia utilizzando il comando go get per recuperare i pacchetti direttamente dai repository supportati, come GitHub, Bitbucket, Launchpad e altri.

A partire dalla versione 1.22 di Go e versioni successive:

  • Non puoi utilizzare go get al di fuori di un modulo nella modalità GOPATH precedente (GO111MODULE=off). Per ulteriori informazioni, consulta Strumenti.

  • Go consiglia di utilizzare un file go.mod per gestire le dipendenze. Per installare le dipendenze durante il deployment, includi un file go.mod nella stessa cartella del file app.yaml. Per ulteriori informazioni sulle versioni di Go e sulla gestione delle dipendenze per le directory dei fornitori, consulta GOPATH e moduli.

Dichiarare e gestire le dipendenze

Le applicazioni Go sono organizzate in pacchetti che rispecchiano la struttura della directory degli file di origine. Quando utilizzi un'istruzione di importazione, i percorsi relativi nell'importazione vengono interpretati. I percorsi di importazione validi sono percorsi completamente qualificati relativi alla sottodirectory src di tutte le directory specificate in GOPATH.

Ad esempio, considera un'app di esempio in cui definisci quanto segue:

  • Modulo GOPATH:

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

    import "foo/bar"
    
  • L'interfaccia a riga di comando gcloud cerca il pacchetto foo/bar nella posizione /home/fred/go/src/foo/bar quando esegui o esegui il deployment dell'app.

Se includi le origini del pacchetto in GOPATH, devi fare attenzione a non inserire il codice sorgente nella directory dell'app in cui si trova il file app.yaml. In questo caso, possono verificarsi problemi sottili perché un pacchetto potrebbe essere caricato due volte, una per il percorso relativo alla directory di un servizio e un'altra per il percorso completo. Per evitare problemi, la CLI gcloud esaminerà sia la directory dell'app sia GOPATH, quindi segnalerà un errore se viene rilevato un conflitto.

Per risultati ottimali, ti consigliamo quanto segue:

  • Crea una directory separata nella directory dell'app per ogni servizio.
  • La directory di ogni servizio deve contenere il file app.yaml del servizio e uno o più file .go.
  • Non includere sottodirectory nella directory di un servizio.
  • GOPATH deve specificare una directory esterna alla directory dell'app e contenere tutte le dipendenze importate dall'app.

Scarica i pacchetti richiesti

Puoi utilizzare il comando go get per scaricare i pacchetti. Ad esempio, per scaricare packagename da GitHub my_repo:

go get github.com/my_repo/packagename

Esegui il deployment in App Engine

Per eseguire il deployment dell'applicazione in App Engine, devi eseguire il deployment delle librerie richieste dall'app insieme al codice dell'applicazione. Per informazioni dettagliate, consulta Testare ed eseguire il deployment dell'applicazione.