Dockerfile 815 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # ---------- base ----------
  2. FROM node:20-alpine AS base
  3. WORKDIR /app
  4. RUN npm config set registry https://mirror2.chabokan.net/npm/
  5. RUN npm install -g pnpm
  6. RUN pnpm config set registry https://mirror2.chabokan.net/npm/
  7. # ---------- deps ----------
  8. FROM base AS deps
  9. COPY package.json pnpm-lock.yaml* ./
  10. RUN pnpm install --frozen-lockfile
  11. # ---------- builder ----------
  12. FROM base AS builder
  13. ARG VITE_API_BASE_URL
  14. ENV VITE_API_BASE_URL=$VITE_API_BASE_URL
  15. COPY --from=deps /app/node_modules ./node_modules
  16. COPY . .
  17. RUN pnpm build
  18. # ---------- runner ----------
  19. FROM base AS runner
  20. WORKDIR /app
  21. ENV NODE_ENV=production
  22. RUN pnpm add -g serve
  23. COPY --from=builder /app/dist ./dist
  24. RUN addgroup -S nodejs
  25. RUN adduser -S reactjs -G nodejs
  26. USER reactjs
  27. EXPOSE 3001
  28. CMD ["serve", "-s", "dist", "-l", "3001"]