Il runtime di Go

Il runtime Go è lo stack software responsabile dell'installazione del codice e delle dipendenze dell'applicazione, nonché dell'esecuzione dell'applicazione nell'ambiente flessibile.

Versioni di Go

Go 1.23 (anteprima) utilizza buildpack. Per l'elenco completo delle versioni di Go supportate e della relativa versione di Ubuntu, consulta la pianificazione del supporto del runtime.

Per utilizzare una versione di Go supportata, devi:

  • Installa gcloud CLI versione 420.0.0 o successive. Puoi aggiornare gli strumenti CLI 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.
    
    
  • Includi le impostazioni runtime_config e operating_system nel app.yaml per specificare un sistema operativo.

  • Se vuoi, puoi specificare una versione del runtime includendo l'impostazione runtime_version in app.yaml. Per impostazione predefinita, viene utilizzata la versione Go più recente se l'impostazione runtime_version non è specificata.

Esempi

  • Per specificare Go 1.23 (anteprima) su Ubuntu 22:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.23"
    
  • Per specificare la versione Go più recente 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 la versione principale.

Ad esempio, l'applicazione potrebbe essere dipiattaforma Go 1.18.10 e in un secondo momento potrebbe essere aggiornata automaticamente a Go 1.18.11, ma non alla versione principale Go 1.19.

Se scegli Go 1.23 (preview) nel file app.yaml, viene utilizzata la versione app.yaml più recente di Go 1.23 (preview) disponibile.patch

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu22"
      runtime_version: "1.23"

Per saperne di più, consulta la documentazione di riferimento app.yaml.

Versioni precedenti dell'ambiente di runtime

Per utilizzare Go versione 1.15 e precedenti, specifica una versione nell'impostazione runtime utilizzando il formato go1.x nel file app.yaml. Ad 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 la versione principale.

Ad esempio, l'applicazione potrebbe essere dipiattata in Go 1.14.10 e in seguito potrebbe essere aggiornata automaticamente a Go 1.14.11, ma non verrà aggiornata automaticamente alla versione principale Go 1.15.

Se scegli la versione del runtime Go go1.15 nel file app.yaml, viene utilizzata la versione 1.15 più recente disponibile, ad esempio 1.15.15.

  runtime: go1.15
  env: flex

Supporto di altri runtime Go

Se devi utilizzare una versione di Go non supportata, puoi creare un runtime personalizzato e selezionare un'immagine di base valida con la versione di Go di cui hai bisogno.

Per le immagini di base fornite da Google o per le immagini di base Docker Go, consulta Creare runtime personalizzati.

Importare i 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 dal tuo GOPATH locale e poi inviate tutte al server di compilazione. Eventuali dipendenze mancanti, ad esempio librerie di terze parti, comportano errori di compilazione.

Per evitare errori di compilazione e assicurarti che tutte le dipendenze dell'app vengano dipiattate con il codice, devi testare l'app localmente prima di eseguire il deployment.

Estensione del runtime

Per istruzioni su come estendere e personalizzare il runtime Go, consulta il compilatore del runtime Go su GitHub.

Server dei metadati

Ogni istanza dell'applicazione può utilizzare il server metadati di Compute Engine per eseguire query sulle informazioni dell'istanza, inclusi il nome host, l'indirizzo IP esterno, l'ID istanza, i metadati personalizzati e le informazioni dell'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 tue istanze App Engine e Compute Engine.

Utilizza il pacchetto cloud.google.com/go/compute/metadata per accedere al server di metadati.