5.8 KiB
5.8 KiB
服务器部署配置
此目录包含生产环境的 Docker 部署配置,使用外部 MySQL 和 Redis 服务。
目录结构
server/
├── docker-compose.yml # Docker Compose 配置
├── deploy.sh # 自动部署脚本
├── .env.example # 环境变量模板
├── .env # 实际环境变量(需手动创建)
├── nginx/ # Nginx 配置
│ ├── nginx.conf
│ └── conf.d/
│ └── default.conf
├── data/ # 数据目录(本地挂载,方便迁移)
│ ├── uploads/ # 用户上传的文件
│ └── logs/
│ ├── api/ # API 服务日志
│ └── nginx/ # Nginx 访问日志
├── admin-dist/ # Admin 打包后的静态文件(需手动放置)
└── README.md
架构说明
┌─────────────────────────────────────┐
│ 外部代理 (SSL) │
└──────────────┬──────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────┐
│ Docker Compose (单一端口 2701) │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ Nginx │ │
│ │ /admin/* → 静态文件 (Admin 后台) │ │
│ │ /api/* → API 服务 │ │
│ │ /uploads → API 服务 │ │
│ └────────────────────────┬───────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ API 服务 (:3000) │ │
│ └────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ MySQL │ │ Redis │
│ (外部服务) │ │ (外部服务) │
└─────────────┘ └─────────────┘
快速开始
1. 配置环境变量
cd server
cp .env.example .env
vim .env # 编辑配置
2. 构建 Admin 前端
cd ../admin
npm install
npm run build
# 将打包产物复制到 server 目录
cp -r dist ../server/admin-dist
3. 启动服务
cd server
docker-compose up -d --build
4. 验证服务
# 检查服务状态
docker-compose ps
# 访问 Admin 后台
curl http://localhost:2701/admin
# 检查 API
curl http://localhost:2701/health
curl http://localhost:2701/api/v1/services
访问地址
| 路径 | 说明 |
|---|---|
/admin |
Admin 管理后台 |
/api/* |
后端 API 接口 |
/api-docs |
API 文档 |
/health |
健康检查 |
/uploads/* |
上传文件 |
常用命令
# 启动
docker-compose up -d
# 停止
docker-compose down
# 重新构建并启动
docker-compose up -d --build
# 查看日志
docker-compose logs -f
docker-compose logs -f api
docker-compose logs -f nginx
# 重启服务
docker-compose restart api
# 进入容器
docker exec -it overseas-appointment-api sh
docker exec -it overseas-appointment-nginx sh
更新 Admin 前端
# 1. 重新构建 admin
cd ../admin
npm run build
# 2. 更新静态文件
rm -rf ../server/admin-dist
cp -r dist ../server/admin-dist
# 3. 重启 nginx
cd ../server
docker-compose restart nginx
外部代理配置示例
Nginx (外部)
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://127.0.0.1:2701;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
故障排查
Admin 页面 404
确认 admin-dist 目录存在且包含 index.html:
ls -la server/admin-dist/
API 连接数据库失败
# 检查数据库连通性
docker exec -it overseas-appointment-api sh
node -e "require('./src/models').sequelize.authenticate().then(() => console.log('OK')).catch(console.error)"
查看实时日志
docker-compose logs -f --tail=100