Go 博客
宣布 App Engine 的全新 Go 1.11 运行时
App Engine 于 2011 年启动了对 Go 的实验性支持。在随后的几年中,Go 社区发展壮大,并为基于云的应用程序确定了惯用模式。今天,Google Cloud 宣布推出 App Engine 标准环境的新 Go 1.11 运行时,它提供了 App Engine 的全部功能(例如仅为使用量付费、自动扩展和托管基础设施),同时支持惯用 Go。
从 Go 1.11 开始,App Engine 上的 Go 对应用程序结构、支持的软件包、context.Context
值或 HTTP 客户端没有限制。您可以根据自己的喜好编写 Go 应用程序,添加一个 app.yaml
文件,您的应用程序即可准备部署到 App Engine 上。 指定依赖项 描述了新运行时如何支持 供应商 和 模块(实验性)进行依赖项管理。
连同 对 Go 的 Cloud Functions 支持(以后的文章中将详细介绍),App Engine 提供了一种引人注目的方式,可以在 Google Cloud Platform (GCP) 上运行 Go 代码,而无需担心底层基础设施。
让我们看看如何为 App Engine 创建一个小应用程序。在此示例中,我们假设使用基于 GOPATH
的工作流程,尽管 Go 模块也 提供实验性支持。
首先,在您的 GOPATH
中创建应用程序
// This server can run on App Engine.
package main
import (
"fmt"
"log"
"net/http"
"os"
)
func main() {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.HandleFunc("/", hello)
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}
func hello(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, 世界"))
}
代码包含一个小 HTTP 服务器的惯用设置,该服务器响应“Hello, 世界”。如果您有之前的 App Engine 经验,您会注意到没有调用 appengine.Main()
,现在它完全是可选的。此外,应用程序代码完全可移植——它与应用程序部署到的基础设施没有任何关联。
如果您需要使用外部依赖项,可以将这些依赖项添加到 vendor
目录或 go.mod
文件中,新运行时都支持这两种方法。
应用程序代码完成后,创建一个 app.yaml
文件以指定运行时
runtime: go111
最后,使用 Google Cloud Platform 帐户设置您的机器
所有设置完成后,您可以使用一条命令进行部署
gcloud app deploy
我们认为,Go 开发人员会发现 App Engine 的新 Go 1.11 运行时是运行 Go 应用程序的可用选项中令人兴奋的补充。有一个 免费层。查看 入门指南 或 迁移指南,并在今天将应用程序部署到新的运行时!
下一篇文章:参与 2018 年 Go 用户调查
上一篇文章:使用 Go Cloud 的 Wire 进行编译时依赖项注入
博客索引