- NestJS + TypeScript + Prisma + PostgreSQL 工程骨架 - 微信登录安全流程:服务端 code2Session 换 openid 后签发 JWT, session_key 缓存于 Redis,不信任前端 openid - 统一响应/异常处理、JWT 全局鉴权(@Public 豁免)、Swagger 文档 - Prisma 全量核心 schema(用户/分类/商品/设计清单/地址/订单/支付/上传/定制任务)+ seed - 业务模块空壳(商品/分类/设计清单/地址/订单/支付/上传/BullMQ 队列) - Docker 多阶段镜像 + 本地/生产 docker-compose - docs:密钥获取指南、COS SDK 移除记录 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
28 lines
785 B
Docker
28 lines
785 B
Docker
# 多阶段构建:builder 编译 TS -> runner 仅运行 dist
|
|
FROM node:22-alpine AS builder
|
|
WORKDIR /app
|
|
|
|
# 先装依赖(利用 Docker 层缓存)
|
|
COPY package*.json ./
|
|
COPY prisma ./prisma
|
|
RUN npm ci
|
|
|
|
COPY tsconfig*.json nest-cli.json ./
|
|
COPY src ./src
|
|
RUN npx prisma generate && npm run build
|
|
|
|
# ──────────────────────────────────────────────
|
|
FROM node:22-alpine AS runner
|
|
WORKDIR /app
|
|
ENV NODE_ENV=production
|
|
|
|
COPY package*.json ./
|
|
COPY prisma ./prisma
|
|
RUN npm ci --omit=dev && npx prisma generate
|
|
|
|
COPY --from=builder /app/dist ./dist
|
|
|
|
EXPOSE 3000
|
|
# 启动前执行 migrate deploy(生产用),随后启动服务
|
|
CMD ["sh", "-c", "npx prisma migrate deploy && node dist/main.js"]
|