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_config
和operating_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
套件存取中繼資料伺服器。