From 5ffd1a4d2c39016e8ffd10d6a2ee7f4cf9828fa4 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Mon, 18 May 2026 15:57:15 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20prisma.ts=20baut=20DATABASE=5FURL=20aus?= =?UTF-8?q?=20DB=5F*-Vars=20(f=C3=BCr=20docker=20exec)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker-compose reicht DB_USER/DB_PASSWORD/DB_HOST/DB_NAME an den Container weiter, aber DATABASE_URL wird erst beim Container-Start im entrypoint.sh aus diesen Komponenten zusammengebaut und exportiert. `docker exec` startet eine neue Shell, die das exportierte DATABASE_URL nicht erbt → ./scripts/admin-rescue.sh brach mit "Environment variable not found: DATABASE_URL" ab. src/lib/prisma.ts macht jetzt dieselbe URL-Konstruktion einmal zentral. Damit funktionieren alle Wartungsskripte (reset-admin- password, cleanup-xss-and-mass-assignment) bei docker exec ohne Wrapper-Hack. Server-Start ist unbeeinflusst (DATABASE_URL ist da schon gesetzt). Live-verifiziert lokal: env -u DATABASE_URL DB_USER=... npx tsx prisma/reset-admin-password.ts admin@admin.com → success. Co-Authored-By: Claude Opus 4.7 (1M context) --- backend/src/lib/prisma.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/backend/src/lib/prisma.ts b/backend/src/lib/prisma.ts index 109781a2..51060d65 100644 --- a/backend/src/lib/prisma.ts +++ b/backend/src/lib/prisma.ts @@ -1,6 +1,22 @@ import { PrismaClient, Prisma } from '@prisma/client'; import { setBeforeValues, setAfterValues } from '../middleware/auditContext.js'; +// DATABASE_URL aus DB_*-Komponenten bauen, falls nicht explizit gesetzt. +// Der entrypoint.sh macht das ebenfalls (für den Server-Start). Aber bei +// `docker exec opencrm-app npx tsx prisma/