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 nella tua app Go, ma puoi continuare a utilizzare la modalità GOPATH precedente se non sei pronto per eseguire la migrazione ai moduli Go.
Quando esegui il deployment dell'app, App Engine utilizza il comando go build per creare l'app e quindi corrisponde al comportamento di Go stesso. Per assicurarti che
la tua app utilizzi la modalità Module-Aware, esegui le seguenti operazioni nel tuo ambiente di sviluppo:
Crea il file
go.moddel modulo nella stessa directory del fileapp.yaml. App Engine cerca nella directory corrente, poi nelle directory principali successive finché non trova un filego.mod.Se App Engine non trova un file
go.mod, segue la modalità GOPATH.Se hai impostato la variabile di ambiente
GO111MODULE, assicurati che il valore della variabile attivi la modalità compatibile con i moduli. Quando esegui il deployment dell'app, App Engine controlla l'ambiente perGO111MODULEe corrisponde al comportamento di Go stesso. App Engine applica l'impostazione della variabileGO111MODULEsolo se hai incluso un filego.modper la tua app.
- Non individuare la directory dell'app in
$GOPATH/srco al di sotto. Se la tua app si trova in un punto qualsiasi dell'albero di directory$GOPATH/src, App Engine segue la modalità GOPATH anche se hai definito un filego.modper la tua app.
Utilizzo di dipendenze private
App Engine non può scaricare le tue dipendenze private durante la procedura di build, pertanto devi includerle nel codice dell'applicazione al momento del deployment.
Per dichiarare le dipendenze private, devi utilizzare l'istruzione replace nel file go.mod. Il seguente esempio presuppone che la tua app si trovi nella directory /myapp/:
Passa alla directory dell'app:
cd /myappCrea una directory contenente le tue dipendenze private:
mkdir privateAssicurati che la dipendenza privata si trovi nella directory
private. Un approccio consiste nel creare un collegamento simbolico:mkdir private/private.example.com ln -s /path/to/private.example.com/foo private/private.example.com/fooAggiorna il file
go.modper utilizzare l'istruzionereplaceper utilizzare la directoryprivateper la dipendenza:go mod edit -replace=private.example.com/foo=./private/private.example.com/fooIl file
go.modora dovrebbe avere il seguente aspetto:File
go.modfinalemodule private.example.com/myapp require private.example.com/foo v1.2.3 replace private.example.com/foo => ./private/private.example.com/fooFile
go.modoriginalemodule private.example.com/myapp require private.example.com/foo v1.2.3Non modificare la modalità di importazione e utilizzo del pacchetto privato. Il tuo estratto conto
importdovrebbe essere simile a questo:import "private.example.com/foo"Includi la tua dipendenza privata nell'implementazione implementando l'app:
gcloud app deploy