我正在尝试在 Google 的应用程序引擎上部署简单的 go 语言代码。这是我试图部署的代码。 https://github.com/GoogleCloudPlatform/golang-samples/tree/master/appengine/go11x/static主程序package mainimport ( "fmt" "html/template" "log" "net/http" "os" "path/filepath" "time")var ( indexTmpl = template.Must( template.ParseFiles(filepath.Join("templates", "index.html")), ))func main() { http.HandleFunc("/", indexHandler) // Serve static files out of the public directory. // By configuring a static handler in app.yaml, App Engine serves all the // static content itself. As a result, the following two lines are in // effect for development only. public := http.StripPrefix("/public", http.FileServer(http.Dir("public"))) http.Handle("/public/", public) port := os.Getenv("PORT") if port == "" { port = "8080" log.Printf("Defaulting to port %s", port) } log.Printf("Listening on port %s", port) log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))}// indexHandler uses a template to create an index.html.func indexHandler(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/" { http.NotFound(w, r) return } type indexData struct { Logo string Style string RequestTime string } data := indexData{ Logo: "/public/gcp-gopher.svg", Style: "/public/style.css", RequestTime: time.Now().Format(time.RFC822), } if err := indexTmpl.Execute(w, data); err != nil { log.Printf("Error executing template: %v", err) http.Error(w, "Internal server error", http.StatusInternalServerError) }}问题:如何处理我希望应用程序读取的模板和其他小文件?我的应用程序是一个玩具应用程序,因此我不需要云存储或任何此类解决方案。我只想从(本地)目录中读取内容。
1 回答
holdtom
TA贡献1805条经验 获得超10个赞
所以...我用 3 种不同的方式测试了这个部署,我发现:
使用 , 直接将存储库克隆到静态文件夹,然后从那里进行部署,重现了该问题,但前提是我是从 Google Cloud Shell 执行此操作的
git clone
。cd
A。后来我发现我在 Cloud Shell 中使用的 Go 版本是 Go 1.12。
b. 我创建了一个新的 VM 实例,以在全新的 Go 1.11 环境中对其进行测试,并且相同的过程运行得非常顺利。
与上面的过程相同,但我没有从静态部署,而是将其内容移动到另一个目录,然后从那里部署它。
A。这在 VM 实例和 Cloud Shell 中有效。
根据App Engine 标准环境中的 Go 1.11 快速入门中的建议,我使用
go get
命令将示例代码下载cd
到静态文件夹并从那里进行部署。A。这在两种环境中都有效。
我的建议是始终尝试使用该go get
命令下载 Google 的 golang 示例,正如指南中所建议的那样,并且在我所做的测试中它没有扰乱 App Engine 部署。
还值得一提的是,这两个环境具有相同的 Cloud SDK 版本,即 259。
- 1 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消