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 上了。指定依賴項 描述了新執行時如何支援 vendor 目錄 和 模組(實驗性)進行依賴項管理。
除了 Cloud Functions 對 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()
。此外,應用程式程式碼是完全可移植的——與部署應用程式的基礎設施沒有任何關聯。
如果您需要使用外部依賴項,可以將這些依賴項新增到 vendor
目錄或 go.mod
檔案中,這兩種方式新執行時都支援。
應用程式程式碼完成後,建立一個 app.yaml
檔案來指定執行時
runtime: go111
最後,在您的機器上設定 Google Cloud Platform 賬戶
完成所有設定後,您可以使用一條命令進行部署
gcloud app deploy
我們認為 Go 開發者會發現新的 App Engine Go 1.11 執行時是一個令人興奮的選擇,豐富了執行 Go 應用程式的方式。App Engine 提供 免費套餐。請查閱 入門指南 或 遷移指南,立即將您的應用部署到新的執行時!
下一篇文章:參與 2018 年 Go 使用者調查
上一篇文章:使用 Go Cloud 的 Wire 進行編譯時依賴注入
部落格索引