# ---------- 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 --no-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 node:20-alpine AS runner WORKDIR /app ENV NODE_ENV=production # install serve LOCAL (not global) RUN npm config set registry https://mirror2.chabokan.net/npm/ RUN npm install -g serve COPY --from=builder /app/dist ./dist RUN addgroup -S nodejs && adduser -S reactjs -G nodejs USER reactjs EXPOSE 3001 CMD ["serve", "-s", "dist", "-l", "3001"]