2 回答
TA贡献1830条经验 获得超3个赞
我会建议你按照命令行上的Go文档的建议使用标志-X
-X importpath.name=value
Set the value of the string variable in importpath named name to value.
This is only effective if the variable is declared in the source code either uninitialized or initialized to a constant string expression. -X will not work if the initializer makes a function call or refers to other variables.
Note that before Go 1.5 this option took two separate arguments.
这样,您就可以调用引用它的任何文件的位置。.env
例如go build -ldflags="-X 'package_path.variable_name=new_value'"
那是
go build -ldflags "-X 'my/main/config.Version=v1.0.0'" -o $(MY_BIN) $(MY_SRC)
TA贡献1815条经验 获得超6个赞
在构建阶段对环境进行硬编码对我来说似乎很奇怪。您不想为每个env构建差异映像,这是浪费。
模块文档建议了更好的方法:
现有 env 优先于稍后加载的 env。
管理多个环境(即开发、测试、生产)的约定是创建一个名为 {YOURAPP}_ENV的 env,并按以下顺序加载 envs:
env := os.Getenv("FOO_ENV")
if "" == env {
env = "development"
}
godotenv.Load(".env." + env + ".local")
if "test" != env {
godotenv.Load(".env.local")
}
godotenv.Load(".env." + env)
godotenv.Load() // The Original .env
- 2 回答
- 0 关注
- 81 浏览
添加回答
举报