package config import ( "github.com/joho/godotenv" "github.com/sirupsen/logrus" "gopkg.in/ini.v1" "os" "runtime" "strconv" ) func GetMode() string { return mode } func AppIsRelease() bool { return GetMode() == RELEASE } func AppIsLocal() bool { return GetMode() == LOCAL } //数据库的配置 type MysqlConfig struct { MYSQL_HOST string MYSQL_USERNAME string MYSQL_PASSWORD string MYSQL_DB string } type MysqlCodeConfig struct { MYSQL_HOST string MYSQL_USERNAME string MYSQL_PASSWORD string MYSQL_DB string } //redis配置 type RedisConfig struct { REDIS_HOST string REDIS_PASSWORD string REDIS_CLUSTER_HOST string REDIS_CLUSTER_PASSWORD string } const ( LOCAL string = "local" DEBUG string = "debug" RELEASE string = "release" ) var mysqlConfigData MysqlConfig var redisConfigData RedisConfig var mode string var master bool func GetConfigMysql() MysqlConfig { return mysqlConfigData } func GetConfigRedis() RedisConfig { return redisConfigData } func init() { str, _ := os.Getwd() logrus.New().Info(str) envDir := ".env" //加载环境变量 if err := godotenv.Load(envDir); err != nil { logrus.New().Fatalf("Error loading .env err:%v", err) } //获取环境变量 mode = os.Getenv("MODE") var err error master, _ = strconv.ParseBool(os.Getenv("MASTER")) logrus.New().Infof("My role is %t", master) iniDir := mode + ".ini" if runtime.GOOS == "darwin" { // mac本地调试 iniDir = "/var/log/hilo/" + iniDir } //根据环境变量获取具体的配置,实现多环境配置 //var conf *ini.File conf, err := ini.LoadSources(ini.LoadOptions{IgnoreInlineComment: true}, iniDir) if err != nil { logrus.New().Fatal(err) } //加载mysql的配置 if err := conf.Section("DATABASE").MapTo(&mysqlConfigData); err != nil { logrus.New().Fatal(err) } if err := conf.Section("REDIS").MapTo(&redisConfigData); err != nil { logrus.New().Fatal(err) } }