主要变更: - 添加完整的项目结构和模块(admin、articles、comments、users、session、oauth2、email、moderation、analytics、jobs 等) - 实现系统初始化 API(/init/status 和 /init/run) - 重写部署流程:迁移到 package.json scripts,删除 Makefile - 优化部署脚本:deploy.sh、healthcheck.sh、backup.sh、restore.sh、verify-env.sh - 更新 README.md:简化文档,整合部署指南 - 优化 AGENTS.md:精简到约 150 行,包含完整的代码规范和命令速查 - 配置 Docker Compose 自动化部署(prisma migrate deploy + seed) - 生成 OAuth2 RSA 密钥对支持 - 添加环境变量验证和数据库备份恢复功能
51 lines
1.0 KiB
Docker
51 lines
1.0 KiB
Docker
# Build stage
|
|
FROM node:20-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# 复制依赖文件
|
|
COPY apps/web/package.json .
|
|
COPY apps/web/pnpm-lock.yaml . # 如果存在
|
|
COPY pnpm-workspace.yaml .
|
|
COPY package.json .
|
|
|
|
# 安装 pnpm
|
|
RUN npm install -g pnpm
|
|
|
|
# 安装依赖
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
# 复制源码
|
|
COPY apps/web .
|
|
|
|
# 构建
|
|
RUN pnpm build
|
|
|
|
# Production stage
|
|
FROM node:20-alpine AS runner
|
|
|
|
WORKDIR /app
|
|
|
|
# 安装依赖(仅生产)
|
|
COPY apps/web/package.json .
|
|
COPY pnpm-workspace.yaml .
|
|
COPY package.json .
|
|
|
|
RUN npm install -g pnpm
|
|
RUN pnpm install --prod --frozen-lockfile
|
|
|
|
# 复制构建结果
|
|
COPY --from=builder /app/.output ./.output
|
|
COPY --from=builder /app/nuxt.config.ts ./
|
|
COPY --from=builder /app/.env.example ./.env.example
|
|
|
|
# 暴露端口
|
|
EXPOSE 3000
|
|
|
|
# 健康检查
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
CMD node -e "require('http').get('http://localhost:3000', (r) => {if(r.statusCode!==200)throw new Error(r.statusCode)})"
|
|
|
|
# 启动命令
|
|
CMD ["node", ".output/server/index.mjs"]
|