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 ARG CACHE_BUST=7 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 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} 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 USER nextjs EXPOSE 3000 CMD ["pnpm", "--filter", "web", "start"]