部署: 支持 .env 文件注入环境变量(OT_ 前缀), nginx-public 公网单端口配置
- config: loadDotEnv() 读取 .env 注入 os env, AutomaticEnv 统一映射 OT_ 前缀 - deploy/nginx-public.conf: 宿主 8088 单端口, 前端静态 + /api /v1 反代 loopback (SSE 关缓冲), host 网络避开 iptables DNAT
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -50,7 +51,32 @@ type ProxyConfig struct {
|
||||
Timeout time.Duration
|
||||
}
|
||||
|
||||
// loadDotEnv 读取 .env 文件并把 KEY=VALUE 注入环境变量(AutomaticEnv 会自动映射 OT_ 前缀)。
|
||||
func loadDotEnv() {
|
||||
data, err := os.ReadFile(".env")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, line := range strings.Split(string(data), "\n") {
|
||||
line = strings.TrimSpace(line)
|
||||
if line == "" || strings.HasPrefix(line, "#") {
|
||||
continue
|
||||
}
|
||||
k, v, ok := strings.Cut(line, "=")
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
k = strings.TrimSpace(k)
|
||||
v = strings.Trim(strings.TrimSpace(v), `"'`)
|
||||
if k != "" && os.Getenv(k) == "" {
|
||||
_ = os.Setenv(k, v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Load() (*Config, error) {
|
||||
loadDotEnv()
|
||||
|
||||
v := viper.New()
|
||||
v.SetEnvPrefix("OT")
|
||||
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
||||
|
||||
Reference in New Issue
Block a user