#!/bin/sh # Entrypoint for the `next-chair` app container — see docker-compose.local.yaml. # `migrate deploy` (never `migrate reset`) is safe to run on every # container start: it only applies migrations not yet recorded in # `_prisma_migrations`, so a restart with an already-up-to-date schema is # a fast no-op, never destructive. It intentionally does NOT seed — # development fixtures are a separate, explicit opt-in service (see # `next-chair-seed` in docker-compose.local.yaml and the brief's own # "production installation versus development seed" distinction); a # fresh container is left empty and shows the installation wizard. set -e echo "[entrypoint] Applying database migrations..." npx prisma migrate deploy # Optional — only provisions/syncs a Super Administrator when # SUPER_ADMIN_EMAIL is set (see scripts/ensure-super-admin.ts). Runs after # migrations so the User.isSuperAdmin column always exists by this point. echo "[entrypoint] Syncing Super Administrator..." npx tsx scripts/ensure-super-admin.ts echo "[entrypoint] Starting application..." # `exec` + calling the `next` binary directly (not `npm run start`) so # the Next.js server process itself receives SIGTERM directly from # Docker on `docker stop` / `docker compose down` — routing through npm # as an intermediary process can swallow the signal and force a slower # SIGKILL after Compose's stop-grace-period instead of a clean shutdown. exec node_modules/.bin/next start -p "${PORT:-3000}"