Le app eseguite nel runtime standard Go 1.11 possono utilizzare qualsiasi pacchetto compatibile con Linux/amd64.
Utilizzo dei moduli Go
Ti consigliamo di utilizzare i moduli Go per gestire le dipendenze nell'app Go, ma puoi continuare a utilizzare la modalità GOPATH precedente se non vuoi eseguire la migrazione ai moduli Go.
Quando esegui il deployment dell'app, App Engine utilizza il comando go build
per
crearla e, di conseguenza, corrisponde al comportamento di Go. Per assicurarti che
la tua app utilizzi la modalità sensibile ai moduli, procedi nel seguente modo
nel tuo ambiente di sviluppo:
Crea il file
go.mod
del modulo nella stessa directory del fileapp.yaml
. App Engine cerca nella directory attuale, quindi nelle directory principali successive finché non trova un filego.mod
.Se App Engine non trova un file
go.mod
, segue la modalità GOPATH.Se imposti la variabile di ambiente
GO111MODULE
, assicurati che il valore della variabile attivi la modalità sensibile al modulo. Quando esegui il deployment dell'app, App Engine controlla l'ambiente per verificare la presenza diGO111MODULE
e rileva il comportamento di Go. App Engine applica l'impostazione della variabileGO111MODULE
solo se hai incluso un filego.mod
per la tua app.
- Non individuare la directory dell'app all'interno o al di sotto di
$GOPATH/src
. Se la tua app si trova in qualsiasi punto della struttura di directory$GOPATH/src
, App Engine segue la modalità GOPATH anche se hai definito un filego.mod
per la tua app.
Utilizzo delle dipendenze private
App Engine non può scaricare le dipendenze private durante il processo di compilazione, perciò devi includerle nel codice dell'applicazione al momento del deployment.
Per dichiarare le dipendenze private, devi utilizzare l'istruzione replace
nel file go.mod
. L'esempio seguente presuppone che la tua app si trovi nella directory /myapp/
:
Passa alla directory dell'app:
cd /myapp
Crea una directory contenente le tue dipendenze private:
mkdir private
Assicurati che la dipendenza privata si trovi nella directory
private
. Puoi creare un link simbolico:mkdir private/private.example.com ln -s /path/to/private.example.com/foo private/private.example.com/foo
Aggiorna il file
go.mod
in modo da utilizzare l'istruzionereplace
per utilizzare la directoryprivate
per la dipendenza:go mod edit -replace=private.example.com/foo=./private/private.example.com/foo
Il file
go.mod
ora dovrebbe avere il seguente aspetto:File
go.mod
finalemodule private.example.com/myapp require private.example.com/foo v1.2.3 replace private.example.com/foo => ./private/private.example.com/foo
File
go.mod
originalemodule private.example.com/myapp require private.example.com/foo v1.2.3
Non modificare il modo in cui importi e utilizzi il pacchetto privato. L'istruzione
import
dovrebbe avere il seguente aspetto:import "private.example.com/foo"
Includi la dipendenza privata nel deployment eseguendo il deployment dell'app:
gcloud app deploy