SSR pages crash with 500 when Supabase queries fail (expired session, network issues). Now catch errors and render with empty data instead of crashing the entire page.
49 lines
1.7 KiB
Docker
49 lines
1.7 KiB
Docker
FROM node:22-alpine AS base
|
|
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
WORKDIR /app
|
|
|
|
# --- Install + Build in one stage ---
|
|
FROM base AS builder
|
|
# CACHE_BUST: change this value to force a full rebuild (busts Docker layer cache)
|
|
ARG CACHE_BUST=13
|
|
RUN echo "Cache bust: ${CACHE_BUST}"
|
|
COPY . .
|
|
RUN pnpm install --no-frozen-lockfile
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
|
|
# NEXT_PUBLIC_* vars are baked into the Next.js build at compile time.
|
|
# Pass them as build args so the same Dockerfile works for any environment.
|
|
ARG NEXT_PUBLIC_SITE_URL=https://myeasycms.de
|
|
ARG NEXT_PUBLIC_SUPABASE_URL=http://localhost:8000
|
|
ARG NEXT_PUBLIC_SUPABASE_PUBLIC_KEY
|
|
ARG NEXT_PUBLIC_DEFAULT_LOCALE=de
|
|
ARG NEXT_PUBLIC_ENABLE_FISCHEREI=true
|
|
ARG NEXT_PUBLIC_ENABLE_MEETING_PROTOCOLS=true
|
|
ARG NEXT_PUBLIC_ENABLE_VERBANDSVERWALTUNG=true
|
|
ENV NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL}
|
|
ENV NEXT_PUBLIC_SUPABASE_URL=${NEXT_PUBLIC_SUPABASE_URL}
|
|
ENV NEXT_PUBLIC_SUPABASE_PUBLIC_KEY=${NEXT_PUBLIC_SUPABASE_PUBLIC_KEY}
|
|
ENV NEXT_PUBLIC_DEFAULT_LOCALE=${NEXT_PUBLIC_DEFAULT_LOCALE}
|
|
ENV NEXT_PUBLIC_ENABLE_FISCHEREI=${NEXT_PUBLIC_ENABLE_FISCHEREI}
|
|
ENV NEXT_PUBLIC_ENABLE_MEETING_PROTOCOLS=${NEXT_PUBLIC_ENABLE_MEETING_PROTOCOLS}
|
|
ENV NEXT_PUBLIC_ENABLE_VERBANDSVERWALTUNG=${NEXT_PUBLIC_ENABLE_VERBANDSVERWALTUNG}
|
|
RUN pnpm --filter web build
|
|
|
|
# --- Run ---
|
|
FROM base AS runner
|
|
WORKDIR /app
|
|
ENV NODE_ENV=production
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
|
|
COPY --from=builder /app/ ./
|
|
|
|
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs
|
|
|
|
# Ensure Next.js cache directories are writable by the nextjs user
|
|
RUN mkdir -p /app/apps/web/.next/cache && chown -R nextjs:nodejs /app/apps/web/.next/cache
|
|
|
|
USER nextjs
|
|
|
|
EXPOSE 3000
|
|
CMD ["pnpm", "--filter", "web", "start"]
|