diff --git a/server/config.yaml b/server/config.yaml index 4f01e1a1..c754c3d8 100644 --- a/server/config.yaml +++ b/server/config.yaml @@ -78,6 +78,7 @@ system: db-type: "mysql" # support mysql/postgresql/sqlite/sqlserver need-init-data: false error-to-email: false + config-env: "GVA_CONFIG" # captcha configuration captcha: diff --git a/server/config/config.go b/server/config/config.go index 6d75ca78..43bae8bb 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -22,7 +22,8 @@ type System struct { Addr int `mapstructure:"addr" json:"addr" yaml:"addr"` DbType string `mapstructure:"db-type" json:"dbType" yaml:"db-type"` NeedInitData bool `mapstructure:"need-init-data" json:"needInitData" yaml:"need-init-data"` - ErrorToEmail bool `mapstructure:"error-to-email" json:"errorToEmail" yaml:"error-to-email"` + ErrorToEmail bool `mapstructure:"error-to-email" json:"errorToEmail" yaml:"error-to-email"` + ConfigEnv string `mapstructure:"config-env" json:"configEnv" yaml:"config-env"` } type JWT struct { diff --git a/server/core/config.go b/server/core/config.go index c06bcca1..e3ac9094 100644 --- a/server/core/config.go +++ b/server/core/config.go @@ -1,32 +1,35 @@ package core import ( + "flag" "fmt" "gin-vue-admin/global" _ "gin-vue-admin/packfile" "github.com/fsnotify/fsnotify" "github.com/spf13/viper" - "github.com/spf13/pflag" + "os" ) +var config string + const defaultConfigFile = "config.yaml" func init() { - pflag.StringP("configFile","c", "", "choose config file.") - pflag.Parse() - - // 优先级: 命令行 > 环境变量 > 默认值 - v := viper.New() - v.BindPFlags(pflag.CommandLine) - v.SetEnvPrefix("gva") - v.BindEnv("configFile") // GVA_CONFIGFILE - - configFile := v.GetString("configFile") - if configFile == ""{ - configFile = defaultConfigFile + flag.StringVar(&config, "c", "", "choose config file.") + flag.Parse() + if config == "" { // 优先级: 命令行 > 环境变量 > 默认值 + if configEnv := os.Getenv(global.GVA_CONFIG.System.ConfigEnv); configEnv == "" { + config = defaultConfigFile + fmt.Printf("您正在使用config的默认值,config的路径为%v\n", defaultConfigFile) + } else { + config = configEnv + fmt.Printf("您正在使用GVA_CONFIG环境变量,config的路径为%v\n", config) + } + } else { + fmt.Printf("您正在使用命令行的-c参数传递的值,config的路径为%v\n", config) } - - v.SetConfigFile(configFile) + v := viper.New() + v.SetConfigFile(config) err := v.ReadInConfig() if err != nil { panic(fmt.Errorf("Fatal error config file: %s \n", err))