部署指南
本文档提供生产环境部署的快速参考。完整的部署架构请查看技术架构 - 部署架构。
快速部署
1. 构建生产版本
# 构建所有应用
pnpm build
# 构建特定应用
pnpm --filter @procure/admin build
pnpm --filter @procure/api build
pnpm --filter @procure/doc build2. 环境变量配置
在部署平台(Vercel, Railway, 自建服务器等)设置环境变量:
必需变量:
NODE_ENV=production
DATABASE_URL=postgresql://user:password@host:5432/dbname
JWT_SECRET=your-jwt-secret-key
SESSION_SECRET=your-session-secret-key应用特定变量:
# Admin 应用
NEXT_PUBLIC_APP_URL=https://your-domain.com
NEXT_PUBLIC_API_URL=https://api.your-domain.com
# API 应用
API_PORT=3001
CORS_ORIGIN=https://your-domain.com3. 数据库迁移
# 生产环境运行迁移(使用 migrate,不要用 push)
pnpm db:migrate deploy⚠️ 警告:生产环境不要使用
db:push,始终使用db:migrate创建版本化的迁移。
Docker 部署
使用 Docker Compose
# 1. 构建镜像
docker-compose build
# 2. 启动服务
docker-compose up -d
# 3. 查看日志
docker-compose logs -f
# 4. 停止服务
docker-compose down查看详细的 Docker 开发指南。
平台部署
Vercel(推荐用于前端)
- 连接 GitHub 仓库
- 配置根目录为
apps/admin - 设置环境变量
- 自动部署
Railway(推荐用于 API)
- 连接 GitHub 仓库
- 添加 PostgreSQL 数据库
- 配置环境变量
- 部署 NestJS 应用
自建服务器
参考完整的部署架构文档了解:
- Docker Compose 配置
- Nginx 反向代理
- SSL 证书配置
- 监控和日志
生产环境最佳实践
1. 数据库
- ✅ 使用版本化迁移(
db:migrate) - ✅ 定期备份数据库
- ✅ 配置连接池
- ✅ 启用慢查询日志
- ❌ 不要使用
db:push
2. 安全
- ✅ 使用强密码和密钥
- ✅ 启用 HTTPS
- ✅ 配置 CORS 白名单
- ✅ 定期更新依赖
- ❌ 不要在代码中硬编码敏感信息
3. 性能
- ✅ 启用缓存(Redis)
- ✅ 使用 CDN 加速静态资源
- ✅ 配置数据库索引
- ✅ 启用 gzip 压缩
4. 监控
- ✅ 配置健康检查端点
- ✅ 监控服务器资源使用
- ✅ 记录关键业务指标
- ✅ 设置告警通知
故障排查
应用无法启动
检查清单:
- 环境变量是否正确配置
- 数据库连接是否正常
- 端口是否被占用
- 查看应用日志
数据库连接失败
# 测试数据库连接
psql $DATABASE_URL
# 检查网络连接
ping database-host
# 查看连接池状态
# 在应用中添加日志内存不足
# 增加 Node.js 内存限制
NODE_OPTIONS=--max-old-space-size=4096
# 或在 package.json 中配置
"scripts": {
"start": "node --max-old-space-size=4096 dist/main.js"
}相关文档
- 技术架构 - 部署架构 - 完整部署方案
- Docker 开发 - Docker 配置详解
- CI/CD - 自动化部署
- 数据库开发 - 数据库迁移管理
需要帮助? 查看完整的部署架构文档或联系运维团队。