Panoramica
Il runtime Go è lo stack software responsabile dell'installazione del codice e delle dipendenze dell'applicazione e dell'esecuzione dell'applicazione nell'ambiente flessibile.
Le versioni di runtime di Go supportate sono: 1.19
(anteprima), 1.18
(anteprima), 1.15
,
1.14
, 1.13
, 1.12
, 1.11
, 1.10
e 1.9
.
Importante: la transizione del supporto di runtime ai buildpack di Google Cloud inizierà con Go versione 1.18:
Anteprima: a partire dalla versione
1.18
, tutti i nuovi runtime Go vengono creati utilizzando buildpack che ti consentono di scegliere un sistema operativo. Per utilizzare questi nuovi runtime, devi specificare impostazioni aggiuntive nelapp.yaml
. Scopri di piùLe versioni di runtime di Go
1.15
e precedenti sono create con Docker. Il codice sorgente è disponibile su GitHub.
Scegli una versione Go
Nuove versioni di runtime (anteprima)
Per il runtime Go 1.18 e versioni successive, devi includere le impostazioni
runtime_config
e operating_system
in
app.yaml
per specificare un sistema operativo. Le versioni di runtime di Go 1.18 (anteprima) e 1.19 (anteprima) vengono eseguite su Ubuntu 22.
Obbligatorio:
La tua applicazione deve utilizzare una
gcloud
interfaccia a riga di comando versione 417.0.1 o successiva. Per visualizzare la versione attuale digcloud
, esegui il comandogcloud version
.L'applicazione deve utilizzare i moduli Go e includere il file
go.mod
nella stessa cartella diapp.yaml
. Ad esempio, la struttura delle cartelle della tua app congo.mod
deve rappresentare:<application-root>/ --> app.yaml --> go.mod --> Other source files used in your application.
Facoltativo: puoi specificare una versione del runtime includendo l'impostazione runtime_version
in app.yaml
. Per impostazione predefinita, viene utilizzata l'ultima versione Go se
l'impostazione runtime_version
non è specificata.
Esempi
Specificare Go 1.18:
runtime: go env: flex runtime_config: operating_system: "ubuntu22" runtime_version: 1.18
Specificare l'ultima versione di Go supportata su Ubuntu 22:
runtime: go env: flex runtime_config: operating_system: "ubuntu22"
La tua app utilizza la release stabile più recente della versione specificata nel file app.yaml
. App Engine si aggiorna automaticamente alle nuove revisioni delle patch, ma non aggiorna automaticamente le versioni principali.
Ad esempio, è possibile eseguire il deployment dell'applicazione a Go 1.18.10 e versioni successive, che verrà aggiornato automaticamente alla versione 1.18.11, ma non verrà aggiornato automaticamente alla versione principale Go 1.19.
Se scegli la versione di runtime di Go 1.19
come mostrato di seguito in app.yaml
, viene usata l'ultima versione di 1.19, ad esempio 1.19.5.
runtime: go
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: 1.19
Per ulteriori informazioni, consulta il riferimento app.yaml
.
Versioni di runtime precedenti
Per le versioni di runtime Go 1.15 e versioni precedenti, puoi scegliere una versione specifica di version
Go utilizzando il formato go1.x
nel file di configurazione di app.yaml
come runtime: go1.x
:
Esempio
runtime: go1.14 env: flex
Se non viene specificata alcuna versione, verrà selezionata automaticamente la versione predefinita di go1.11
.
La tua app utilizza la release stabile più recente della versione specificata nel file app.yaml
. App Engine si aggiorna automaticamente alle nuove revisioni delle patch, ma non aggiorna automaticamente le versioni principali.
Ad esempio, è possibile eseguire il deployment dell'applicazione a Go 1.14.10 e versioni successive, che verrà aggiornato automaticamente alla versione 1.14.11, ma non verrà aggiornato automaticamente alla versione principale Go 1.15.
Se scegli la versione go runtime go1.15
come mostrato di seguito in app.yaml
, viene usata l'ultima versione di 1.15, ad esempio 1.15.15.
runtime: go1.15 env: flex
Importazione di pacchetti
Il codice viene compilato quando esegui il deployment della tua app in App Engine. Quando esegui il comando di deployment, le dipendenze dell'app vengono prima raccolte dal GOPATH
locale, quindi vengono inviate al server di build. Eventuali dipendenze mancanti, ad esempio librerie di terze parti, comportano errori di compilazione.
Per evitare errori di build e per assicurarti che venga eseguito il deployment di tutte le dipendenze dell'app con il tuo codice, devi testare l'app localmente prima del deployment.
Estensione del runtime
Per istruzioni su come estendere e personalizzare il runtime Go, leggi l'articolo Strumento di creazione runtime di Go su GitHub.
Server di metadati
Ogni istanza della tua applicazione può utilizzare il server di metadati di Compute Engine per eseguire query sulle informazioni sull'istanza, inclusi nome host, indirizzo IP esterno, ID istanza, metadati personalizzati e informazioni sull'account di servizio. App Engine non ti consente di impostare metadati personalizzati per ogni istanza, ma puoi impostare metadati personalizzati a livello di progetto e leggerli dalle istanze di App Engine e Compute Engine.
Utilizza il pacchetto cloud.google.com/go/compute/metadata
per accedere al server di metadati.