部署: 支持 .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:
Sakurasan
2026-08-15 13:17:29 +08:00
parent 360c6b33a6
commit 5b67b66611
2 changed files with 71 additions and 0 deletions
+26
View File
@@ -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(".", "_"))