我有一个Go服务器程序,需要在运行时传递一个特定的gflag值,但我无法在GCP的app.yaml文件中指定它。我对 GCP 很陌生,所以这可能是一个不方便的查询。
这是我的 Go 代码结构:
project_root
|
|___cmd
|___ main
|___ main.go
|___ foo_handlers.go (defines FooHandler(w, r))
|___ bar_handlers.go (defines BarHandler(w, r))
main.go 是典型的戈兰 HTTP 服务器程序,大致具有以下结构:
func main() {
// Flags
flag.StringVar(
&SomeFlagVar,
"some_flag", // flag name
"dev_value", // default value
"Some Flag")
flag.Parse()
// Foo
http.HandleFunc("/foo", FooHandler)
// Bar
http.HandleFunc("/bar/", BarHandler)
// Server starting boiler plate code
http.ListenAndServe(..)
我的 GCP 应用程序.yaml 文件大致如下所示:
runtime: go114
main: ./cmd/main
handlers:
- url: /.*
script: auto
这工作正常,但正如你所注意到的,我无法将任何自定义值传递给标志。现在,我只是将默认标志值硬编码为在 GCP 中部署的首选值,并且我不会检查该更改,这显然是实现目标的一种非常粗糙的方法。some_flag
我已尝试将配置设置为:或entrypointentrypoint: ./cmd/main/main --some_flag=gcpentrypoint: .bin/main --some_flag=gcp
但是对于这两种情况,GCP都会出错,并带有表单的错误。/bin/sh: 1: exec: bin/main: not found
我可以通过指定一个网络测功机,在Heroku中非常容易地实现相同的目标,如下所示: bin/main --some_flag=heroku
如何在 GCP 应用中进行相同的设置?我正在使用 GCP 标准环境。我不想使用相同的环境变量。
谢谢!
慕工程0101907
Cats萌萌
随时随地看视频慕课网APP
相关分类