Dockerfile 841 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # 使用 Node.js LTS 版本作为基础镜像
  2. FROM node:20-alpine AS builder
  3. # 安装 pnpm
  4. RUN npm install -g pnpm
  5. # 设置工作目录
  6. WORKDIR /app
  7. # 复制包管理文件
  8. COPY package.json pnpm-lock.yaml ./
  9. # 安装依赖
  10. RUN pnpm install --frozen-lockfile
  11. # 复制源代码和配置文件
  12. COPY tsconfig.json ./
  13. COPY src ./src
  14. COPY config.json ./
  15. # 构建项目
  16. RUN pnpm build
  17. # 生产阶段
  18. FROM node:20-alpine
  19. # 安装 pnpm
  20. RUN npm install -g pnpm
  21. # 设置工作目录
  22. WORKDIR /app
  23. # 从构建阶段复制依赖和构建产物
  24. COPY --from=builder /app/package.json ./
  25. COPY --from=builder /app/pnpm-lock.yaml ./
  26. COPY --from=builder /app/node_modules ./node_modules
  27. COPY --from=builder /app/dist ./dist
  28. COPY --from=builder /app/config.json ./
  29. # 暴露端口(如果需要)
  30. # EXPOSE 3000
  31. # 运行应用
  32. CMD ["pnpm", "start"]