FROM node:22-alpine AS base

FROM base AS deps
RUN apk add --no-cache libc6-compat openssl
WORKDIR /app
COPY package.json ./
ENV NODE_ENV=production
RUN npm i --omit=dev

FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .

ENV NODE_ENV=production \
    NEXT_TELEMETRY_DISABLED=1 \
    SKIP_REDIS="true"

ARG BASE_URL NEXT_PUBLIC_BASE_URL NEXT_PUBLIC_STRIPE_PUBLIC_KEY

ENV BASE_URL=$BASE_URL \
    NEXT_PUBLIC_BASE_URL=$NEXT_PUBLIC_BASE_URL \
    NEXT_PUBLIC_STRIPE_PUBLIC_KEY=$NEXT_PUBLIC_STRIPE_PUBLIC_KEY \
    STRIPE_SECRET_KEY="mock" \
    STRIPE_WEBHOOK_SECRET="mock"

RUN SKIP_ENV_VALIDATION=1 npm run build

FROM base AS runner
WORKDIR /app

ENV NODE_ENV=production \
    NEXT_TELEMETRY_DISABLED=1 \
    SKIP_REDIS="false" \
    PORT=3000

ARG BASE_URL POSTGRES_PASSWORD POSTGRES_DB PGHOST PGPORT JWT_SECRET BACKENDSERVER_URL STRIPE_SECRET_KEY \
    NEXT_PUBLIC_STRIPE_PUBLIC_KEY STRIPE_WEBHOOK_SECRET FIC_CLIENT_ID FIC_ACCESS_TOKEN FIC_COMPANY_ID ARUBA_USER \
    ARUBA_PASS EXP_API_USER EXP_API_PASS KEYDB_URL TILES_URL SKEBBY_USER SKEBBY_PASS STORAGE_URL STORAGE_TOKEN \
    NEXT_PUBLIC_BASE_URL INTERNAL_BASE_URL POSTGRES_USER

ENV BASE_URL=$BASE_URL \
    NEXT_PUBLIC_BASE_URL=$NEXT_PUBLIC_BASE_URL \
    INTERNAL_BASE_URL=$INTERNAL_BASE_URL \
    PGHOST=$PGHOST \
    POSTGRES_DB=$POSTGRES_DB \
    PGPORT=$PGPORT \
    POSTGRES_USER=$POSTGRES_USER \
    POSTGRES_PASSWORD=$POSTGRES_PASSWORD \
    JWT_SECRET=$JWT_SECRET \
    BACKENDSERVER_URL=$BACKENDSERVER_URL \
    STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY \
    NEXT_PUBLIC_STRIPE_PUBLIC_KEY=$NEXT_PUBLIC_STRIPE_PUBLIC_KEY \
    STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET \
    FIC_CLIENT_ID=$FIC_CLIENT_ID \
    FIC_ACCESS_TOKEN=$FIC_ACCESS_TOKEN \
    FIC_COMPANY_ID=$FIC_COMPANY_ID \
    ARUBA_USER=$ARUBA_USER \
    ARUBA_PASS=$ARUBA_PASS \
    EXP_API_USER=$EXP_API_USER \
    EXP_API_PASS=$EXP_API_PASS \
    KEYDB_URL=$KEYDB_URL \
    TILES_URL=$TILES_URL \
    SKEBBY_USER=$SKEBBY_USER \
    SKEBBY_PASS=$SKEBBY_PASS \
    REVALIDATION_SECRET="SWKpgaaLfsyeqV1eOT0WG7TUFBewir8kJXure3O37ki8Lt4Z4IiEgBW4zPHDdM5c" \
    STORAGE_URL=$STORAGE_URL \
    STORAGE_TOKEN=$STORAGE_TOKEN

RUN addgroup -g 1001 -S nodejs 
RUN adduser -S nextjs -u 1001

COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs
EXPOSE 3000

CMD ["node", "server.js"]

