config.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package conf
  2. import (
  3. "log"
  4. "os"
  5. "speechAnalysis/pkg/logx"
  6. "speechAnalysis/pkg/mysqlx"
  7. "github.com/spf13/viper"
  8. )
  9. var (
  10. // config file name
  11. configName = "config"
  12. // config file paths
  13. configPaths = []string{
  14. "./",
  15. "../",
  16. "./conf",
  17. "../conf",
  18. }
  19. )
  20. type (
  21. webConf struct {
  22. Host string // 本机ip地址
  23. Port string // 端口号
  24. APPort string // 本机作为的Grpc服务端的端口号
  25. AlHost string // 算法服务ip地址
  26. AlPort string // 算法服务端口号
  27. NodeId string // 主账户用户名
  28. OssType string // 对象存储类型
  29. JWTSecret string
  30. }
  31. nsqConf struct {
  32. NsqdAddr string
  33. NsqlookupdAddr string
  34. }
  35. localConf struct {
  36. StorePath string // 本地文件存储路径
  37. PreLoadPath string // 本地文件预加载路径
  38. }
  39. Analysis struct {
  40. Url string // 本地文件存储路径
  41. LongUrl string // 本地文件预加载路径
  42. }
  43. )
  44. var (
  45. WebConf = &webConf{}
  46. LogConf = &logx.LogConf{}
  47. DbConf = &mysqlx.Conf{}
  48. NsqConf = &nsqConf{}
  49. LocalConf = &localConf{}
  50. AanlysisConf = &Analysis{}
  51. GrpcPort string
  52. Viper *viper.Viper
  53. )
  54. func Init() error {
  55. Viper = viper.New()
  56. Viper.SetConfigName(configName)
  57. for _, path := range configPaths {
  58. Viper.AddConfigPath(path)
  59. }
  60. if err := Viper.ReadInConfig(); err != nil {
  61. log.Fatalf("ReadInConfig err:%v", err)
  62. }
  63. read2Conf(Viper)
  64. GrpcPort = os.Getenv("GRPC_PORT") // 只给grpc算法服务使用,本服务不用
  65. nodeId := os.Getenv("NODE_ID") // 主账户用户名
  66. host := os.Getenv("HOST") // 本机IP地址
  67. algHost := os.Getenv("AL_HOST") // 算法服务的IP地址
  68. nsqdAddr := os.Getenv("NSQD_ADDR")
  69. if len(GrpcPort) == 0 { // 如果gprcPort为空,那么用配置的APPort
  70. GrpcPort = WebConf.APPort
  71. }
  72. if len(nodeId) > 0 {
  73. WebConf.NodeId = nodeId
  74. }
  75. if len(algHost) > 0 {
  76. WebConf.AlHost = algHost
  77. }
  78. if len(host) > 0 {
  79. WebConf.Host = host
  80. }
  81. if len(nsqdAddr) > 0 {
  82. NsqConf.NsqdAddr = nsqdAddr
  83. }
  84. DBHost := os.Getenv("DB_HOST")
  85. DBName := os.Getenv("DB_NAME")
  86. DBPort := os.Getenv("DB_PORT")
  87. DBUser := os.Getenv("DB_USER")
  88. DBPasswd := os.Getenv("DB_PASSWD")
  89. if len(DBHost) > 0 &&
  90. len(DBName) > 0 &&
  91. len(DBPort) > 0 &&
  92. len(DBUser) > 0 &&
  93. len(DBPasswd) > 0 {
  94. DbConf.Dsn = DBUser + ":" + DBPasswd + "@tcp(" + DBHost + ":" + DBPort + ")/" + DBName + "?charset=utf8&parseTime=True&loc=Local"
  95. }
  96. return nil
  97. }
  98. func read2Conf(v *viper.Viper) {
  99. _ = v.UnmarshalKey("web", WebConf)
  100. _ = v.UnmarshalKey("log", LogConf)
  101. _ = v.UnmarshalKey("db", DbConf)
  102. _ = v.UnmarshalKey("nsq", NsqConf)
  103. _ = v.UnmarshalKey("local", LocalConf)
  104. _ = v.UnmarshalKey("analysis", AanlysisConf)
  105. showConfig()
  106. }
  107. func showConfig() {
  108. log.Println("......................................................")
  109. log.Printf(" WebConf: %+v", WebConf)
  110. log.Printf(" LogConf: %+v", LogConf)
  111. log.Printf(" DbConf: %+v", DbConf)
  112. log.Printf(" NsqConf: %+v", NsqConf)
  113. log.Printf(" GrpcPort: %+v", GrpcPort)
  114. log.Printf(" LocalConf: %+v", LocalConf)
  115. log.Printf(" AanlysisConf: %+v", AanlysisConf)
  116. log.Println("......................................................")
  117. }