2024-01-28 19:59:33 +08:00
|
|
|
package setting
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/unknwon/com"
|
|
|
|
|
"log"
|
|
|
|
|
"os"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var optionValueMap = map[string]string{}
|
|
|
|
|
|
|
|
|
|
// getOptionEnvValue 获取必须声明的环境变量
|
|
|
|
|
func getOptionEnvValue(key string, defaultV string) string {
|
|
|
|
|
value := os.Getenv(key)
|
|
|
|
|
result := ""
|
|
|
|
|
if value == "" {
|
|
|
|
|
result = defaultV
|
|
|
|
|
} else {
|
|
|
|
|
result = value
|
|
|
|
|
}
|
|
|
|
|
optionValueMap[key] = result
|
|
|
|
|
return result
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// getMustEnvValue 获取必须声明的环境变量
|
|
|
|
|
func getMustEnvValue(key string) string {
|
|
|
|
|
value := os.Getenv(key)
|
|
|
|
|
if value == "" {
|
|
|
|
|
log.Printf("[message-nest] you must assign env: %s", key)
|
|
|
|
|
return ""
|
|
|
|
|
} else {
|
|
|
|
|
return value
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// printOptionValue 打印可选环境变量值
|
|
|
|
|
func printOptionValue() {
|
|
|
|
|
for key, val := range optionValueMap {
|
2024-01-28 20:25:03 +08:00
|
|
|
log.Printf("[message-nest] current option env: %s, value: %s", key, val)
|
2024-01-28 19:59:33 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// loadConfigFromEnv 从环境变量加载配置
|
|
|
|
|
func loadConfigFromEnv() {
|
|
|
|
|
AppSetting.JwtSecret = getOptionEnvValue("JWT_SECRET", "message-nest")
|
|
|
|
|
AppSetting.LogLevel = getOptionEnvValue("LOG_LEVEL", "INFO")
|
|
|
|
|
|
|
|
|
|
ServerSetting.RunMode = getOptionEnvValue("RUN_MODE", "release")
|
|
|
|
|
ServerSetting.HttpPort = 8000
|
|
|
|
|
ServerSetting.ReadTimeout = 60
|
|
|
|
|
ServerSetting.WriteTimeout = 60
|
2026-01-15 20:05:00 +08:00
|
|
|
ServerSetting.UrlPrefix = getOptionEnvValue("URL_PREFIX", "")
|
2024-01-28 19:59:33 +08:00
|
|
|
|
2024-04-29 17:31:13 +08:00
|
|
|
DatabaseSetting.Type = getOptionEnvValue("DB_TYPE", "sqlite")
|
2025-04-28 18:06:20 +08:00
|
|
|
DatabaseSetting.Ssl = getOptionEnvValue("SSL", "false")
|
2024-04-29 17:31:13 +08:00
|
|
|
|
2024-04-29 21:10:17 +08:00
|
|
|
if DatabaseSetting.Type == "mysql" {
|
|
|
|
|
DatabaseSetting.Host = getMustEnvValue("MYSQL_HOST")
|
|
|
|
|
DatabaseSetting.Port = com.StrTo(getMustEnvValue("MYSQL_PORT")).MustInt()
|
|
|
|
|
DatabaseSetting.User = getMustEnvValue("MYSQL_USER")
|
|
|
|
|
DatabaseSetting.Password = getMustEnvValue("MYSQL_PASSWORD")
|
|
|
|
|
DatabaseSetting.Name = getMustEnvValue("MYSQL_DB")
|
|
|
|
|
}
|
2024-01-28 19:59:33 +08:00
|
|
|
|
2024-04-29 21:10:17 +08:00
|
|
|
DatabaseSetting.TablePrefix = getOptionEnvValue("MYSQL_TABLE_PREFIX", "message_")
|
|
|
|
|
DatabaseSetting.SqlDebug = getOptionEnvValue("SQL_DEBUG", "disable")
|
2024-01-28 19:59:33 +08:00
|
|
|
printOptionValue()
|
|
|
|
|
}
|