2025-05-13 18:50:30 +02:00
|
|
|
# Build Stage
|
|
|
|
|
FROM node:20-alpine AS build
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
# Copy package files and install dependencies
|
|
|
|
|
COPY package*.json ./
|
|
|
|
|
RUN npm ci
|
|
|
|
|
|
2025-10-31 22:23:45 +01:00
|
|
|
# Copy the rest of the app
|
2025-05-13 18:50:30 +02:00
|
|
|
COPY . .
|
2025-10-31 22:23:45 +01:00
|
|
|
|
2025-11-03 10:47:27 +01:00
|
|
|
# Accept build arguments for NEXT_PUBLIC_ variables
|
|
|
|
|
# These MUST be provided at build time
|
|
|
|
|
ARG NEXT_PUBLIC_API_BASE_URL
|
|
|
|
|
ARG NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY
|
|
|
|
|
|
|
|
|
|
# Set as environment variables so Next.js can bake them into the build
|
|
|
|
|
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
|
|
|
|
|
ENV NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=$NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY
|
|
|
|
|
|
2025-10-31 22:23:45 +01:00
|
|
|
# Build Next.js app (standalone mode)
|
2025-11-03 10:47:27 +01:00
|
|
|
# NEXT_PUBLIC_ variables are now baked in at build time
|
2025-05-13 18:50:30 +02:00
|
|
|
RUN npm run build
|
|
|
|
|
|
2025-10-31 22:23:45 +01:00
|
|
|
# Production Stage - Next.js standalone server
|
2025-10-30 12:18:57 +01:00
|
|
|
FROM node:20-alpine
|
2025-05-13 18:50:30 +02:00
|
|
|
|
2025-10-30 12:18:57 +01:00
|
|
|
WORKDIR /app
|
2025-05-13 18:50:30 +02:00
|
|
|
|
2025-10-31 22:23:45 +01:00
|
|
|
# Copy standalone server files from build stage
|
|
|
|
|
COPY --from=build /app/.next/standalone ./
|
|
|
|
|
COPY --from=build /app/.next/static ./.next/static
|
|
|
|
|
COPY --from=build /app/public ./public
|
2025-10-30 12:30:29 +01:00
|
|
|
|
2025-10-30 12:18:57 +01:00
|
|
|
# Expose port 3000
|
|
|
|
|
EXPOSE 3000
|
2025-05-13 18:50:30 +02:00
|
|
|
|
2025-10-31 22:23:45 +01:00
|
|
|
# Set environment to production
|
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
|
ENV PORT=3000
|
|
|
|
|
ENV HOSTNAME="0.0.0.0"
|
|
|
|
|
|
|
|
|
|
# Start Next.js server
|
|
|
|
|
# Runtime environment variables (NEXT_PUBLIC_*) can be passed via docker-compose or -e flags
|
|
|
|
|
CMD ["node", "server.js"]
|