56 lines
1.5 KiB
Bash
56 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
echo "[start-web] Starting web service..."
|
|
echo "[start-web] Node: $(node -v || true)"
|
|
|
|
cd /app
|
|
|
|
# Ensure pnpm available in this base image
|
|
ensure_pnpm() {
|
|
if command -v pnpm >/dev/null 2>&1; then
|
|
return 0
|
|
fi
|
|
|
|
if command -v corepack >/dev/null 2>&1; then
|
|
corepack enable >/dev/null 2>&1 || true
|
|
corepack prepare pnpm@9 --activate >/dev/null 2>&1 || true
|
|
fi
|
|
|
|
if command -v pnpm >/dev/null 2>&1; then
|
|
return 0
|
|
fi
|
|
|
|
if command -v npm >/dev/null 2>&1; then
|
|
npm install -g pnpm@9 >/dev/null 2>&1
|
|
fi
|
|
|
|
if ! command -v pnpm >/dev/null 2>&1; then
|
|
echo "[start-web] pnpm not available; aborting startup" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
ensure_pnpm
|
|
|
|
echo "[start-web] Using APP_DIR=$(pwd)"
|
|
echo "[start-web] NEXT_PUBLIC_APP_URL=${NEXT_PUBLIC_APP_URL:-}"
|
|
echo "[start-web] NEXT_PUBLIC_CONVEX_URL=${NEXT_PUBLIC_CONVEX_URL:-}"
|
|
echo "[start-web] PNPM_STORE_DIR=${PNPM_STORE_DIR:-/tmp/pnpm-store}"
|
|
|
|
# Ensure pnpm uses container-local store (not host bind mount)
|
|
pnpm config set store-dir "${PNPM_STORE_DIR:-/tmp/pnpm-store}" >/dev/null 2>&1 || true
|
|
|
|
# Prisma generate (idempotent) and apply DB migrations
|
|
echo "[start-web] prisma generate"
|
|
pnpm prisma:generate
|
|
|
|
echo "[start-web] prisma migrate deploy"
|
|
pnpm exec prisma migrate deploy
|
|
|
|
# Seed Better Auth users safely (ensure-only by default)
|
|
echo "[start-web] seeding Better Auth users (ensure-only)"
|
|
pnpm auth:seed || true
|
|
|
|
echo "[start-web] launching Next.js"
|
|
exec pnpm start -p 3000
|