Load .env.<APP_ENV>, validate config at boot, keep secrets out of the image
`main.go` only ever loaded `.env`; the `APP_ENV` switch described in `.env.local` / `.env.production` did not exist, and a missing variable surfaced one restart at a time as a log.Fatalf inside db.Connect. config.Load now picks `.env.<APP_ENV>` (default local) then `.env`, with real environment winning, reads every setting into one typed Config and reports everything missing in one message. Production insists on a POS signing secret; local warns when DB_HOST is not a local address. db, redis and the image store take the Config instead of reading env themselves. Also: - livehub read MQTT_USERNAME while everything else uses MQTT_USER, so the console stream connected to the broker unauthenticated. Both accepted. - .dockerignore: `COPY . .` was baking .env.production into the image. Dockerfile sets APP_ENV=production. - Drop utils/config.go (dead viper loader) and create_table.go (unused, hardcoded production DSN); go mod tidy removes viper. - .env.example lists every variable the code reads; docs/ENVIRONMENT.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -119,7 +119,15 @@ func StartLiveHub() *LiveHub {
|
||||
SetCleanSession(true). // No queued backlog on reconnect; stale nudges are noise.
|
||||
SetOrderMatters(false)
|
||||
|
||||
if user := strings.TrimSpace(os.Getenv("MQTT_USERNAME")); user != "" {
|
||||
// MQTT_USER is the name the ingest consumer and the env files use. This
|
||||
// read MQTT_USERNAME for a while, so the live stream connected to the
|
||||
// production broker with no credentials at all; MQTT_USERNAME is still
|
||||
// honoured for any deployment that set it.
|
||||
user := strings.TrimSpace(os.Getenv("MQTT_USER"))
|
||||
if user == "" {
|
||||
user = strings.TrimSpace(os.Getenv("MQTT_USERNAME"))
|
||||
}
|
||||
if user != "" {
|
||||
opts.SetUsername(user)
|
||||
opts.SetPassword(os.Getenv("MQTT_PASSWORD"))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user