如何持久保存环境变量
How to save Env variable persistently
当服务启动时,会生成一个会话密钥,我尝试将其放在一个环境变量中以供将来使用(也包括在重新启动服务时)。
我用了os.Setenv(),但是重启后,环境变量为空
sessionKey := os.Getenv(_sessionKey)
if sessionKey == "" {
sessionKey = string(securecookie.GenerateRandomKey(32))
os.Setenv(_sessionKey, sessionKey)
}
sessionsStore := sessions.NewCookieStore([]byte(sessionKey))
是否有另一种方法可以为此目的使用环境变量,或者最好将其保存到文件中?
使用 'viper' lib 将环境变量保存到文件:
func Getenv(key string) string {
viper.SetConfigType("env")
viper.SetConfigFile(".env")
err := viper.ReadInConfig()
if err != nil {
log.Fatalf("Error while reading config file %s", err)
}
value, ok := viper.Get(key).(string)
if !ok {
return ""
}
return value
}
func Setenv(key string, value string) {
viper.SetConfigType("env")
viper.SetConfigFile(".env")
err := viper.ReadInConfig()
if err != nil {
log.Fatalf("Error while reading config file %s", err)
}
viper.Set(key, value)
err = viper.WriteConfig()
if err != nil {
log.Fatalf("Error while writing config file %s", err)
}
}
当服务启动时,会生成一个会话密钥,我尝试将其放在一个环境变量中以供将来使用(也包括在重新启动服务时)。
我用了os.Setenv(),但是重启后,环境变量为空
sessionKey := os.Getenv(_sessionKey)
if sessionKey == "" {
sessionKey = string(securecookie.GenerateRandomKey(32))
os.Setenv(_sessionKey, sessionKey)
}
sessionsStore := sessions.NewCookieStore([]byte(sessionKey))
是否有另一种方法可以为此目的使用环境变量,或者最好将其保存到文件中?
使用 'viper' lib 将环境变量保存到文件:
func Getenv(key string) string {
viper.SetConfigType("env")
viper.SetConfigFile(".env")
err := viper.ReadInConfig()
if err != nil {
log.Fatalf("Error while reading config file %s", err)
}
value, ok := viper.Get(key).(string)
if !ok {
return ""
}
return value
}
func Setenv(key string, value string) {
viper.SetConfigType("env")
viper.SetConfigFile(".env")
err := viper.ReadInConfig()
if err != nil {
log.Fatalf("Error while reading config file %s", err)
}
viper.Set(key, value)
err = viper.WriteConfig()
if err != nil {
log.Fatalf("Error while writing config file %s", err)
}
}