概览
Go 运行时是负责安装应用代码和依赖项,然后在柔性环境中运行该应用的软件栈。
受支持的 Go 运行时版本包括:1.19
(预览版)、1.18
(预览版)、1.15
、1.14
、1.13
、1.12
、1.11
、1.10
和 1.9
。
重要提示:从 Go 1.18 版开始,运行时支持将转换到 Google Cloud 的 Buildpack:
选择 Go 版本
新运行时版本(预览版)
对于 Go 运行时 1.18 版及更高版本,您必须在 app.yaml
中添加 runtime_config
和 operating_system
设置以指定操作系统。Go 运行时 1.18 版(预览版)和 1.19 版(预览版)在 Ubuntu 22 上运行。
必需:
您的应用必须使用
gcloud
CLI 417.0.1 版或更高版本。如需查看当前的gcloud
版本,请运行gcloud version
命令。您的应用必须使用 Go 模块,并将
go.mod
文件添加到app.yaml
所在的文件夹中。例如,包含go.mod
的应用的文件夹结构必须表示为:<application-root>/ --> app.yaml --> go.mod --> Other source files used in your application.
可选:您可以通过在 app.yaml
中添加 runtime_version
设置来指定运行时版本。默认情况下,如果未指定 runtime_version
设置,则使用最新的 Go 版本。
示例
指定 Go 1.18 版:
runtime: go env: flex runtime_config: operating_system: "ubuntu22" runtime_version: 1.18
指定 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.19
会使用可用的最新 1.19 版本,例如 1.19.5。
runtime: go
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: 1.19
如需了解详情,请参阅 app.yaml
参考文档。
过往运行时版本
对于 Go 1.15 运行时版本及更早版本,您可以在 app.yaml
配置文件中使用 go1.x
格式选择特定的 Go version
,即 runtime: go1.x
:
示例
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
导入软件包
当您将应用部署到 App Engine 时,您的代码会被编译。当您运行部署命令时,系统首先从本地 GOPATH
收集应用的依赖项,然后再将它们全部发送到构建服务器。如果缺少任何依赖项(例如第三方库),都将导致构建失败。
为了避免构建失败并确保应用的所有依赖项都与代码一起部署,您应该先在本地测试应用,再进行部署。
扩展运行时
如需有关如何扩展和自定义 Go 运行时的说明,请参阅 GitHub 上的 Go 运行时构建器。
元数据服务器
应用的每个实例都可以使用 Compute Engine 元数据服务器来查询有关实例的信息,包括实例的主机名、外部 IP 地址、实例 ID、自定义元数据和服务帐号信息。App Engine 不允许为每个实例设置自定义元数据,但您可以设置项目级的自定义元数据,并从 App Engine 和 Compute Engine 实例中读取这些元数据。
您可以使用 cloud.google.com/go/compute/metadata
软件包访问元数据服务器。