49 lines
1.2 KiB
Docker
49 lines
1.2 KiB
Docker
# 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 ./
|
||
|
||
# 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
|
||
|
||
EXPOSE 3000
|
||
ENV PORT=3000
|
||
ENV HOSTNAME="0.0.0.0"
|
||
|
||
CMD ["node", "server.js"]
|