# Use a multi‑stage build for a Next.js app # ---------- Builder stage ---------- FROM node:20-alpine AS builder # Set working directory WORKDIR /app # Install dependencies (use package lock when present) COPY shop/package*.json ./ RUN npm ci --omit=dev # Install nodemailer for email sending RUN npm install nodemailer # Copy the source code COPY shop/ . ARG NEXT_PUBLIC_SUPABASE_URL ARG NEXT_PUBLIC_SUPABASE_ANON_KEY ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY # Build the production output RUN npm run build # ---------- Runtime stage ---------- FROM node:20-alpine AS runner WORKDIR /app # Statische Assets kopieren (wichtig für die Chunks/404-Fehler von vorhin) COPY --from=builder /app/public* ./public COPY --from=builder /app/.next/static ./.next/static # Den fertigen Standalone-Server kopieren COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/supabase ./supabase COPY --from=builder /app/migrate.js ./migrate.js # Pass Supabase variables to runtime image ARG NEXT_PUBLIC_SUPABASE_URL ARG NEXT_PUBLIC_SUPABASE_ANON_KEY ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY ENV IS_DOCKER=true EXPOSE 3000 ENV PORT=3000 ENV HOSTNAME="0.0.0.0" CMD ["sh", "-c", "node migrate.js && node server.js"]