注意:在未来的几个月内,我们将会重新整理 App Engine 文档网站,使得查找内容更轻松,并更好地与其他 Google Cloud 产品保持一致。将会提供相同的内容,但导航现在将与其余的 Cloud 产品相一致。 如果您在浏览网站时有疑问或者希望提交反馈,请点击“发送反馈”。

Go 运行时

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

概览

Go 运行时是负责安装应用代码和依赖项,然后在柔性环境中运行该应用的软件栈。

受支持的 Go 运行时版本包括:1.19(预览版)、1.18(预览版)、1.151.141.131.121.111.101.9

重要提示:从 Go 1.18 版开始,运行时支持将转换到 Google Cloud 的 Buildpack:

  • 预览版:从 1.18 版开始,所有新的 Go 运行时都使用 Buildpack 构建,可让您选择操作系统。如需使用这些新运行时,您必须在 app.yaml 中指定额外的设置。了解详情

  • 1.15 及更低版本的 Go 运行时版本使用 Docker 构建。您可以在 GitHub 上找到相关源代码。

选择 Go 版本

新运行时版本(预览版)

对于 Go 运行时 1.18 版及更高版本,您必须在 app.yaml 中添加 runtime_configoperating_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 软件包访问元数据服务器。