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
1.18
e successive sono basate su buildpacks, che richiede la scelta di un sistema operativo nel fileapp.yaml
. Ad esempio, per utilizzare Go 1.22, devi specificare Ubuntu 22 come sistema operativo.Le versioni
1.15
e precedenti sono state create utilizzando Docker.
Per l'elenco completo delle versioni di Go supportate e delle versioni di Ubuntu corrispondenti, consulta la pianificazione del supporto per l'esecuzione.
Scegli una versione Go
Nuove versioni di runtime
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.
Per utilizzare i nuovi runtime, devi installare gcloud CLI
versione 420.0.0 o successiva. Puoi aggiornare gli strumenti dell'interfaccia a riga di comando eseguendo il comando gcloud components update
. Per visualizzare la versione installata, puoi eseguire il comando gcloud version
.
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
.
Ad esempio, la struttura delle cartelle dell'app con go.mod
deve rappresentare:
<application-root>/
--> app.yaml
--> go.mod
--> Other source files used in your application.
Se vuoi, puoi specificare una versione del runtime includendo l'impostazione runtime_version
in app.yaml
. Per impostazione predefinita, viene utilizzata l'ultima versione di Go se
l'impostazione runtime_version
non è specificata.
Esempi
Per specificare Go 1.22 su Ubuntu 22:
runtime: go env: flex runtime_config: operating_system: "ubuntu22" runtime_version: "1.22"
Per specificare l'ultima versione di Go supportata su Ubuntu 22:
runtime: go env: flex runtime_config: operating_system: "ubuntu22"
La tua app utilizza l'ultima release stabile della versione specificata nel file app.yaml
. App Engine si aggiorna automaticamente alle nuove revisioni
delle patch, ma non alla versione principale.
Ad esempio, il deployment dell'applicazione potrebbe essere eseguito nella versione Go 1.18.10 e successivamente in Go 1.18.11, ma non alla versione principale Go 1.19.
Se scegli Go 1.22 nel tuo file app.yaml
, viene utilizzata l'ultima versione patch
di Go 1.22 disponibile.
runtime: go
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "1.22"
Per ulteriori informazioni, consulta il riferimento app.yaml
.
Versioni di runtime precedenti
Per la versione 1.15 e precedenti di Go, devi specificare una versione utilizzando il formato go1.x
nel file di configurazione 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 l'ultima release stabile della versione specificata nel file app.yaml
. App Engine si aggiorna automaticamente alle nuove revisioni
delle patch, ma non alla versione principale.
Ad esempio, il deployment dell'applicazione potrebbe essere eseguito nella versione Go 1.14.10 e successivamente in Go 1.14.11, ma non alla versione principale Go 1.15.
Se scegli la versione del runtime go go1.15
nel file app.yaml
, viene utilizzata l'ultima versione disponibile, ad esempio 1.15.15.
runtime: go1.15 env: flex
Importa pacchetti
Il codice viene compilato quando esegui il deployment dell'app in App Engine. Quando esegui il comando di deployment, le dipendenze dell'app vengono prima raccolte dall'oggetto GOPATH
locale, quindi vengono tutte inviate al server di build. Eventuali dipendenze mancanti, ad esempio librerie di terze parti, comportano errori di compilazione.
Per evitare errori nelle build e assicurarti che venga eseguito il deployment di tutte le dipendenze dell'app con il codice, devi testare l'app localmente prima di eseguirne il deployment.
Estendere il runtime
Per istruzioni su come estendere e personalizzare il runtime Go, consulta Go runtime Builder su GitHub.
Server metadati
Ogni istanza dell'applicazione può utilizzare il server di metadati di Compute Engine per eseguire query sull'istanza, tra cui nome host, indirizzo IP esterno, ID istanza, metadati personalizzati e informazioni sull'account di servizio. App Engine non 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 dei metadati.