# Production-ready Dockerfile for Next.js # Receive build arguments passed by Coolify ARG NEXT_PUBLIC_SUPABASE_URL ARG NEXT_PUBLIC_SUPABASE_ANON_KEY # Builder stage FROM node:20-alpine AS builder WORKDIR /app # Set environment variables for the builder stage from build arguments ENV NODE_ENV=production ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY # Copy package.json and package-lock.json from the 'myfavstuff' subdirectory COPY myfavstuff/package.json myfavstuff/package-lock.json* ./ # Install dependencies including dev dependencies needed for build RUN npm ci # Copy the rest of your app's source code from the 'myfavstuff' subdirectory COPY myfavstuff . # Debug the environment variables RUN echo "--- Debugging Build Environment Variables (Builder Stage) ---" && \ echo "NEXT_PUBLIC_SUPABASE_URL: ($NEXT_PUBLIC_SUPABASE_URL)" && \ echo "NEXT_PUBLIC_SUPABASE_ANON_KEY: ($NEXT_PUBLIC_SUPABASE_ANON_KEY)" && \ echo "--- End Debugging --- " && \ npm run build # Use a non-root user for security RUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001 # Production stage FROM node:20-alpine AS runner WORKDIR /app ENV NODE_ENV=production ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY COPY --from=builder /app/public ./public # Look for .next output (either standalone or regular) COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next USER nextjs EXPOSE 3000 ENV PORT=3000 ENV HOSTNAME=0.0.0.0 CMD ["npm", "start"]