.env: DATABASE_URL aus DB_*-Komponenten zusammenbauen (kein Doppel-Pflegen)
Bisher: DATABASE_URL und die DB_USER/PASSWORD/etc. mussten parallel
gepflegt werden – Werte konnten auseinanderlaufen.
Fix:
- dotenv-expand installiert (löst ${VAR}-Substitution in .env)
- .env.example: DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}
- DB_HOST als neue Variable (Default localhost; Container überschreibt zu "db")
- Backend index.ts: dotenvExpand.expand() statt nur dotenv.config()
- Plus Fallback im Code: wenn DATABASE_URL leer aber DB_*-Werte vorhanden,
baut der Backend-Code die URL selbst zusammen (encodeURIComponent für
Sonderzeichen im Passwort).
docker-compose.yml setzt DATABASE_URL weiterhin explizit (Container-
internal Hostname "db") und überschreibt damit die Dev-Variante.
Live-verifiziert:
- Dev-Modus: mysql://root:***@localhost:3306/opencrm (substituiert)
- Container: mysql://root:***@db:3306/opencrm (compose explizit)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+6
-3
@@ -18,14 +18,17 @@ FACTORY_DEFAULTS_DIR=./data/factory-defaults
|
||||
BACKUPS_DIR=./data/backups
|
||||
|
||||
# ============== DATENBANK ==============
|
||||
DB_HOST=localhost # Im Container überschreibt docker-compose das auf "db"
|
||||
DB_NAME=opencrm
|
||||
DB_USER=opencrm
|
||||
DB_PASSWORD=change-this-password
|
||||
DB_ROOT_PASSWORD=change-this-root-password
|
||||
|
||||
# Connection-String fürs Backend (im Container = Service-Name `db`)
|
||||
# Im Dev-Modus (npm run dev) lokal: localhost:DB_PORT
|
||||
DATABASE_URL=mysql://root:change-this-root-password@localhost:3306/opencrm
|
||||
# Connection-String wird aus den DB_*-Komponenten zusammengebaut (dotenv-expand).
|
||||
# Manuell überschreiben nur wenn Sonderfälle (z.B. extra Query-Parameter).
|
||||
# Hinweis: für lokales Dev mit MariaDB im Container nutze DB_HOST=localhost,
|
||||
# weil docker-compose den DB-Port auf 127.0.0.1:DB_PORT mappt.
|
||||
DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}
|
||||
|
||||
# ============== SECURITY ==============
|
||||
# JWT-Secret: min. 32 Zeichen. Generieren: openssl rand -hex 64
|
||||
|
||||
Reference in New Issue
Block a user