44 lines
1.6 KiB
Go
44 lines
1.6 KiB
Go
// Package config carga la configuración del backend desde variables de entorno.
|
|
package config
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/caarlos0/env/v11"
|
|
)
|
|
|
|
// Config agrupa toda la configuración del servidor. Los campos de Zitadel/S3
|
|
// ya están definidos aunque todavía no se usen: se conectan en las siguientes
|
|
// fases sin tener que tocar esta struct de nuevo.
|
|
type Config struct {
|
|
Env string `env:"APP_ENV" envDefault:"development"`
|
|
Port int `env:"PORT" envDefault:"8080"`
|
|
|
|
// Orígenes permitidos para CORS en desarrollo (el frontend en Vite corre en otro puerto).
|
|
CORSAllowedOrigins []string `env:"CORS_ALLOWED_ORIGINS" envSeparator:"," envDefault:"http://localhost:5173"`
|
|
|
|
DatabaseURL string `env:"DATABASE_URL" envDefault:"postgres://dockermanager:dockermanager@localhost:5432/dockermanager?sslmode=disable"`
|
|
|
|
ZitadelIssuer string `env:"ZITADEL_ISSUER"`
|
|
ZitadelClientID string `env:"ZITADEL_CLIENT_ID"`
|
|
ZitadelClientSecret string `env:"ZITADEL_CLIENT_SECRET"`
|
|
SessionSecret string `env:"SESSION_SECRET" envDefault:"dev-insecure-secret-change-me"`
|
|
|
|
S3Endpoint string `env:"S3_ENDPOINT" envDefault:"http://localhost:8333"`
|
|
S3Bucket string `env:"S3_BUCKET" envDefault:"dockermanager"`
|
|
S3AccessKey string `env:"S3_ACCESS_KEY"`
|
|
S3SecretKey string `env:"S3_SECRET_KEY"`
|
|
|
|
// DockerHost vacío = usar el socket por defecto del sistema (DOCKER_HOST estándar del SDK).
|
|
DockerHost string `env:"DOCKER_HOST"`
|
|
}
|
|
|
|
// Load lee la configuración desde el entorno del proceso.
|
|
func Load() (Config, error) {
|
|
cfg := Config{}
|
|
if err := env.Parse(&cfg); err != nil {
|
|
return Config{}, fmt.Errorf("parsing config: %w", err)
|
|
}
|
|
return cfg, nil
|
|
}
|