# 1. 配置环境
cp .env.example .env
# 编辑 .env,填入 JWT_SECRET 和 OPENAI_API_KEY
# 2. 验证环境
./scripts/verify-production.sh
# 3. 部署应用
./scripts/deploy.sh # 自动检测
./scripts/deploy.sh docker-run # 或使用 docker run
./scripts/deploy.sh docker-compose # 或使用 docker-compose# 构建并运行
make build-docker
make docker-run
# 或查看所有命令
make help# 构建镜像
docker build -t aimo:latest .
# 运行容器
docker run -d \
-p 3000:3000 \
--env-file .env \
--name aimo-app \
aimo:latest
# 查看日志
docker logs -f aimo-app
# 停止容器
docker stop aimo-app| 命令 | 说明 |
|---|---|
./scripts/verify-production.sh |
验证生产环境配置 |
./scripts/deploy.sh |
部署应用 |
./scripts/deploy.sh logs |
查看日志 |
./scripts/deploy.sh stop |
停止应用 |
make build-docker |
构建 Docker 镜像 |
make docker-run |
运行 Docker 容器 |
make docker-stop |
停止 Docker 容器 |
make help |
查看所有 Make 命令 |
# 必需配置
JWT_SECRET=your-production-secret-key-at-least-32-chars
OPENAI_API_KEY=sk-...
# 可选配置
NODE_ENV=production
PORT=3000部署成功后:
# 访问应用
curl http://localhost:3000
# 测试 API
curl http://localhost:3000/api/v1/memos
# 查看容器状态
docker ps | grep aimo
# 查看日志
docker logs aimo-appaimo/
├── Dockerfile # 镜像定义
├── docker-compose.prod.yml # 容器编排
├── .dockerignore # Docker 构建优化
├── .env.example # 环境变量模板
├── Makefile # 便捷命令
├── PRODUCTION_DEPLOYMENT.md # 详细部署文档
├── PRODUCTION_FEATURES.md # 功能总结
└── scripts/
├── verify-production.sh # 环境验证
└── deploy.sh # 部署脚本
┌─────────────────────┐
│ Docker Image │
└──────────┬──────────┘
│
┌─────────────┴─────────────┐
│ │
┌───────▼────────┐ ┌──────▼────────┐
│ Web Build │ │ Server Build │
│ (Vite) │ │ (Express) │
│ │ │ │
│ • React 19 │ │ • TypeScript │
│ • Tailwind CSS │ │ • LanceDB │
│ • Code Split │ │ • JWT Auth │
└────────────────┘ └───────────────┘
│ │
┌───────▼────────────────────────────▼───────┐
│ Unified Container │
│ ├── apps/server/dist/ (Server) │
│ ├── apps/server/public/ (Web Static) │
│ └── node_modules/ (Runtime) │
└────────────────────────────────────────────┘
│
┌────────▼────────┐
│ Running App │
│ Port: 3000 │
│ Health Check │
└─────────────────┘
| 工作流 | 触发条件 |
|---|---|
| CI | Push to main/master/develop, PR |
| Docker 发布 | Push to branches, 创建标签 (v*.*.*) |
| 部署 | 创建标签 (v*.*.*) |
ghcr.io/your-org/aimo:
├── latest # 主分支最新
├── main # main 分支
├── develop # develop 分支
├── v1.0.0 # 版本标签
├── v1.0 # 主次版本
└── v1 # 主版本
# 查看错误日志
docker logs aimo-app
# 检查环境变量
docker inspect aimo-app | grep -A 20 Env
# 检查端口占用
lsof -i :3000# 检查静态文件
docker exec aimo-app ls -la apps/server/public/
# 检查 index.html
docker exec aimo-app cat apps/server/public/index.html | head -20# 增加 Docker 构建超时
docker build --timeout 3600 -t aimo:latest .
# 或检查磁盘空间
df -h✅ 首次启动可能较慢 - 这是正常的,Docker 需要初始化
✅ 使用健康检查 - 自动重启失败的容器
✅ 启用缓存 - GitHub Actions 缓存加速构建
✅ 监控内存 - 监控容器资源占用
- 📖 查看详细文档:PRODUCTION_DEPLOYMENT.md
- 📋 了解功能:PRODUCTION_FEATURES.md
- 🔧 自定义配置:编辑
.env和Dockerfile - 📊 设置监控:配置日志和性能监控
- 🔐 增强安全:使用 HTTPS、防火墙规则等
- 脚本帮助:
./scripts/verify-production.sh - Make 命令:
make help - 日志信息:
docker logs aimo-app - 部署命令:
./scripts/deploy.sh
💡 提示: 所有脚本都包含详细的错误信息和使用说明。遇到问题时,查看脚本输出的建议!