FROM node:20-alpine

# Install libc6-compat for compatibility with native node modules
RUN apk add --no-cache libc6-compat

WORKDIR /app

# Copy dependency files first (better layer caching - reinstall only when package.json changes)
COPY sistem-km-next/package*.json ./

# Install all dependencies
RUN npm install

# Copy the rest of the application source files
COPY sistem-km-next/ .

# --- Build-time environment variables ---
# Next.js bakes NEXT_PUBLIC_* variables into the client-side JavaScript bundle
# at BUILD TIME (not runtime), so they must be available here as ENV vars.
# Coolify automatically injects these as Docker build args from the environment section.
ARG NEXT_PUBLIC_SUPABASE_URL
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
ARG SUPABASE_SERVICE_ROLE_KEY
ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY
ENV SUPABASE_SERVICE_ROLE_KEY=$SUPABASE_SERVICE_ROLE_KEY

# Build the production Next.js bundle
RUN npm run build

# Expose Next.js port
EXPOSE 3000

ENV PORT=3000
ENV HOSTNAME="0.0.0.0"

# Start in production mode (no dev tools, no HMR, much faster)
CMD ["npm", "run", "start"]
