Dockerfile 881 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # Build stage
  2. FROM registry.cn-hangzhou.aliyuncs.com/stuuudy/node:18-alpine as builder
  3. # Install pnpm
  4. RUN npm install -g pnpm
  5. # Set working directory
  6. WORKDIR /app
  7. # Copy package files
  8. COPY package.json pnpm-lock.yaml ./
  9. # Install dependencies
  10. RUN pnpm install --frozen-lockfile
  11. # Copy source code
  12. COPY . .
  13. # Build application
  14. RUN pnpm build
  15. # Production stage
  16. FROM registry.cn-hangzhou.aliyuncs.com/stuuudy/node:18-alpine
  17. # Install PM2
  18. RUN npm install -g pm2
  19. WORKDIR /app
  20. # 从构建阶段复制构建产物和必要文件
  21. COPY --from=builder /app/dist ./dist
  22. COPY --from=builder /app/package*.json ./
  23. COPY --from=builder /app/node_modules ./node_modules
  24. COPY --from=builder /app/.env ./.env
  25. COPY --from=builder /app/ecosystem.config.js ./
  26. # 暴露端口(根据您的应用需要修改)
  27. EXPOSE 3000
  28. # 启动应用
  29. CMD ["pm2-runtime", "start", "ecosystem.config.js"]