29 lines
1.5 KiB
Bash
29 lines
1.5 KiB
Bash
#!/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}"
|