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(關於此話題的更多資訊可見往後文章),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()
,這現在已經完全變成選取項目了。此外,應用程式程式碼完全可移植,不會連結到部署應用程式的基礎架構。
如果您需要使用外部相依性,您可以將這些相依性新增到 供應者
目錄或 go.mod
檔案中,新執行時期同時支援這兩個功能。
完成應用程式程式碼後,建立 app.yaml
檔案來指定執行時期
runtime: go111
最後,使用 Google Cloud Platform 帳戶設定您的機器
完成所有設定後,您可以使用一個指令進行部署
gcloud app deploy
我們認為 Go 開發人員會發現 App Engine 的新 Go 1.11 執行時期是執行 Go 應用程式的可用選項中令人興奮的新選擇。這裡有 免費層級。查看 入門指南 或 遷移指南,並在今天部署到新的執行時期!
下一篇文章:參與 2018 年 Go 使用者調查
上一篇文章:使用 Go Cloud 的 Wire 建立編譯時期相依性注入
部落格索引