docker: Auto-Seed bei leerer DB (kein RUN_SEED-Toggle nötig)
Der entrypoint prüft jetzt nach prisma db push, ob die User-Tabelle leer ist – wenn ja, wird automatisch geseeded. Damit muss man bei Erstinstallation nicht mehr daran denken, RUN_SEED=true zu setzen. Logik: RUN_SEED=true → Force-Seed (auch bei nicht-leerer DB; für Reset) User-Count = 0 → Auto-Seed (Default-Verhalten bei leerer DB) User-Count > 0 → kein Seed (DB schon initialisiert) Implementiert via "node -e" mit @prisma/client – kein extra Tool nötig. Fallback bei Fehlern: User-Count = -1, dann kein Seed. .env.example aktualisiert: RUN_SEED bleibt 'false' als Default und ist nur noch für Force-Reseed-Szenarien gedacht. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -60,3 +60,11 @@ LISTEN_ADDR=0.0.0.0 # In Docker = 0.0.0.0, in Bare-Metal-Production = 127
|
||||
# price, rmsoft, rmsoft_blue, rmsoft_blue-dark, win98
|
||||
# Empfehlung: dracula (dark) oder adminer-dark – beide modern.
|
||||
ADMINER_DESIGN=dracula
|
||||
|
||||
# ============== SEED ==============
|
||||
# Bei leerer DB seedet der Container automatisch (legt admin@admin.com / admin
|
||||
# + Stammdaten an) – nichts zu konfigurieren.
|
||||
# Nur wenn man eine NICHT-leere DB nochmal forciert seeden will (z.B. nach
|
||||
# Reset / Stammdaten-Update), kurz auf 'true' setzen, neu starten, dann
|
||||
# wieder zurück.
|
||||
RUN_SEED=false
|
||||
|
||||
@@ -35,9 +35,24 @@ until npx prisma db push --skip-generate --accept-data-loss 2>/dev/null; do
|
||||
done
|
||||
echo "[entrypoint] DB-Schema synced"
|
||||
|
||||
# Auto-Seed: wenn die User-Tabelle leer ist (= Erstinstallation), automatisch seeden.
|
||||
# RUN_SEED=true erzwingt Seed auch bei nicht-leerer DB (z.B. nach Reset).
|
||||
USER_COUNT=$(node -e "
|
||||
const { PrismaClient } = require('@prisma/client');
|
||||
const p = new PrismaClient();
|
||||
p.user.count()
|
||||
.then((n) => { process.stdout.write(String(n)); process.exit(0); })
|
||||
.catch(() => { process.stdout.write('-1'); process.exit(0); });
|
||||
" 2>/dev/null)
|
||||
|
||||
if [ "${RUN_SEED:-false}" = "true" ]; then
|
||||
echo "[entrypoint] RUN_SEED=true – seede DB"
|
||||
echo "[entrypoint] RUN_SEED=true – seede DB (Force)"
|
||||
npx prisma db seed || echo "[entrypoint] Seed fehlgeschlagen oder schon gelaufen – ignoriert"
|
||||
elif [ "$USER_COUNT" = "0" ]; then
|
||||
echo "[entrypoint] DB ist leer (User-Count=0) – Auto-Seed wird ausgeführt"
|
||||
npx prisma db seed || echo "[entrypoint] Auto-Seed fehlgeschlagen – ignoriert"
|
||||
else
|
||||
echo "[entrypoint] DB enthält $USER_COUNT User – kein Seed nötig"
|
||||
fi
|
||||
|
||||
echo "[entrypoint] Starte Backend…"
|
||||
|
||||
Reference in New Issue
Block a user