BingLogyBlog-Backend/Dockerfile.web
laobinghu 37742571ae feat: 完成项目初始化并重构部署流程
主要变更:
- 添加完整的项目结构和模块(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 密钥对支持
- 添加环境变量验证和数据库备份恢复功能
2026-03-28 16:53:25 +08:00

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"]