Le app eseguite nel runtime standard di Go 1.11 possono utilizzare qualsiasi 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 è ancora il momento di eseguire la migrazione ai moduli Go.
Quando esegui il deployment dell'app, App Engine utilizza il comando go build
per compilarla e quindi corrisponde al comportamento di Go stesso. Per garantire che
se la tua app utilizza la modalità sensibile ai moduli, svolgi i passaggi di sviluppo
questo ambiente:
Crea il file
go.mod
del modulo nella stessa directory in cui si trovaapp.yaml
. App Engine cerca nella directory corrente, quindi nelle directory principali successive finché non trova un filego.mod
.Se App Engine non trova un file
go.mod
, segue modalità GOPATH.Se imposti la variabile di ambiente
GO111MODULE
, assicurati che il valore della variabile attivi modalità sensibile al modulo. Quando esegui il deployment dell'app, App Engine controlla perGO111MODULE
e corrisponde al comportamento di Go stesso. App Engine applica l'impostazione della variabileGO111MODULE
solo se hai incluso un filego.mod
per la tua app.
- Non individuare la directory delle app in
$GOPATH/src
o in un'altra posizione. Se la tua app è in qualsiasi punto della struttura di directory$GOPATH/src
, App Engine segue modalità GOPATH anche se hai definito un filego.mod
per la tua app.
Utilizzo di dipendenze private
App Engine non può scaricare le dipendenze private durante il processo di compilazione, pertanto devi includerle nel codice dell'applicazione al momento del deployment.
Per dichiarare le dipendenze private, dovrai utilizzare l'istruzione replace
nel file go.mod
. Nell'esempio seguente si presuppone che l'app si trovi nella directory /myapp/
:
Passa alla directory delle app:
cd /myapp
Crea una directory contenente le dipendenze private:
mkdir private
Assicurati che la dipendenza privata si trovi nella directory
private
. Uno. è la creazione di un collegamento 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 che utilizzi l'istruzionereplace
in modo da utilizzareprivate
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 le modalità di importazione e utilizzo del pacchetto privato. Il tuo
import
dovrebbe avere il seguente aspetto:import "private.example.com/foo"
Includi la tua dipendenza privata nel deployment eseguendo il deployment dell'app:
gcloud app deploy