Dockerfile 927 B

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