// Package config 提供全局配置,全部通过环境变量设置。 package config import ( "os" "time" ) // Config 应用配置。 type Config struct { // 监听地址 Listen string // Docker 操作超时 DockerPullTimeout time.Duration DockerRestartTimeout time.Duration // 会话密钥 TTL SessionTTL time.Duration // Nonce 缓存 TTL NonceTTL time.Duration // 时间戳容忍窗口 TimestampWindow time.Duration // 日志级别 LogLevel string } // Load 从环境变量加载配置,未设置则用默认值。 func Load() *Config { return &Config{ Listen: getEnv("LISTEN", ":8080"), DockerPullTimeout: getDuration("DOCKER_PULL_TIMEOUT", 5*time.Minute), DockerRestartTimeout: getDuration("DOCKER_RESTART_TIMEOUT", 30*time.Second), SessionTTL: getDuration("SESSION_TTL", 30*time.Second), NonceTTL: getDuration("NONCE_TTL", 60*time.Second), TimestampWindow: getDuration("TIMESTAMP_WINDOW", 30*time.Second), LogLevel: getEnv("LOG_LEVEL", "info"), } } func getEnv(key, fallback string) string { if v := os.Getenv(key); v != "" { return v } return fallback } func getDuration(key string, fallback time.Duration) time.Duration { if v := os.Getenv(key); v != "" { d, err := time.ParseDuration(v) if err == nil { return d } } return fallback }