# ---------- base ----------
FROM node:20-alpine AS base

WORKDIR /app

RUN npm config set registry https://mirror2.chabokan.net/npm/
RUN npm install -g pnpm
RUN pnpm config set registry https://mirror2.chabokan.net/npm/

# ---------- deps ----------
FROM base AS deps

COPY package.json pnpm-lock.yaml* ./

RUN pnpm install --frozen-lockfile

# ---------- builder ----------
FROM base AS builder

ARG VITE_API_BASE_URL
ENV VITE_API_BASE_URL=$VITE_API_BASE_URL

COPY --from=deps /app/node_modules ./node_modules
COPY . .

RUN pnpm build

# ---------- runner ----------
FROM base AS runner

WORKDIR /app

ENV NODE_ENV=production

RUN pnpm add -g serve

COPY --from=builder /app/dist ./dist

RUN addgroup -S nodejs
RUN adduser -S reactjs -G nodejs

USER reactjs

EXPOSE 3001

CMD ["serve", "-s", "dist", "-l", "3001"]