Go 執行階段

Go 執行階段是軟體堆疊,負責安裝應用程式程式碼和依附元件,然後在彈性環境中執行該應用程式。

Go 版本

Go 1.23 使用buildpack。如需支援的 Go 版本完整清單,以及對應的 Ubuntu 版本,請參閱執行階段支援時間表

如要使用支援的 Go 版本,您必須:

  • 安裝 gcloud CLI 420.0.0 以上版本。您可以執行 gcloud components update 指令來更新 CLI 工具。如要查看已安裝的版本,您可以執行 gcloud version 指令。

  • Go 建議您使用 go.mod 檔案來管理依附元件。如要在部署期間安裝依附元件,請在 app.yaml 檔案所在的資料夾中加入 go.mod 檔案。

    舉例來說,含有 go.mod 的應用程式資料夾結構必須代表下列項目:

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    
  • app.yaml 檔案中加入 runtime_configoperating_system 設定,以指定作業系統。

  • 您可以選擇在 app.yaml 中加入 runtime_version 設定,藉此指定執行階段版本。根據預設,如果未指定 runtime_version 設定,系統會使用最新的 Go 版本。

範例

  • 如要在 Ubuntu 22 上指定 Go 1.23,請按照下列步驟操作:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.23"
    
  • 如要在 Ubuntu 22 上指定支援的最新 Go 版本,請按照下列步驟操作:

      runtime: go
      env: flex
    
      runtime_config:
          operating_system: "ubuntu22"
    

應用程式會使用 app.yaml 檔案中指定版本的最新穩定版。App Engine 會自動更新至新的修補程式修訂版本,但不會自動更新主要版本。

舉例來說,您的應用程式可能先採用 Go 1.18.10 版進行部署,並在之後自動更新到 Go 1.18.11 版,但它並不會自動更新至主要版本 Go 1.19。

app.yaml 檔案中選擇 Go 1.23 後,即可使用最新的 patch 版本 Go 1.23。

  runtime: go
  env: flex

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

詳情請參閱 app.yaml 參考資料。

先前的執行階段版本

如要使用 Go 1.15 以下版本,請在 app.yaml 檔案中使用 go1.x 格式,在 runtime 設定中指定版本。例如:

  runtime: go1.14
  env: flex

如果未指定版本,系統會自動選取 go1.11 的預設版本。

應用程式會使用 app.yaml 檔案中指定版本的最新穩定版。App Engine 會自動更新至新的修補程式修訂版本,但不會自動更新主要版本。

舉例來說,您的應用程式可能先採用 Go 1.14.10 版進行部署,並在之後自動更新到 Go 1.14.11 版,但它並不會自動更新至主要版本 Go 1.15。

app.yaml 檔案中選擇 go 執行階段版本 go1.15 後,系統會使用可用的最新版本 1.15,例如 1.15.15。

  runtime: go1.15
  env: flex

支援其他 Go 執行階段

如果您需要使用不受支援的 Go 版本,可以建立自訂執行階段,並選取含有所需 Go 版本的有效基礎映像檔。

如需 Google 提供的基本映像檔或 Docker Go 基本映像檔,請參閱「建構自訂執行階段」一文。

匯入套件

將應用程式部署到 App Engine 時會編譯程式碼。執行部署指令時,會先從本機 GOPATH 收集應用程式的依附元件,然後將依附元件全部傳送至組建伺服器。如有缺少任何依附元件 (例如第三方程式庫),就會造成建構失敗。

為避免構建失敗,並確保應用程式的所有依附元件都能使用程式碼完成部署,請在部署應用程式之前先在本機進行測試

擴充執行階段

如需如何擴充和自訂 Go 執行階段的操作說明,請參閱 GitHub 上的 Go 執行階段製作工具

中繼資料伺服器

您的應用程式中的每個執行個體都可以使用 Compute Engine 中繼資料伺服器來查詢與該執行個體相關的資訊,包括主機名稱、外部 IP 位址、執行個體 ID、自訂中繼資料,以及服務帳戶資訊。雖然 App Engine 不允許您為每個執行個體設定自訂中繼資料,但是您可以設定全專案的自訂中繼資料,並從您的 App Engine 及 Compute Engine 執行個體讀取該中繼資料。

使用 cloud.google.com/go/compute/metadata 套件存取中繼資料伺服器。