# 服务器部署配置 此目录包含生产环境的 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. 配置环境变量 ```bash cd server cp .env.example .env vim .env # 编辑配置 ``` ### 2. 构建 Admin 前端 ```bash cd ../admin npm install npm run build # 将打包产物复制到 server 目录 cp -r dist ../server/admin-dist ``` ### 3. 启动服务 ```bash cd server docker-compose up -d --build ``` ### 4. 验证服务 ```bash # 检查服务状态 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/*` | 上传文件 | ## 常用命令 ```bash # 启动 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 前端 ```bash # 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 (外部) ```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`: ```bash ls -la server/admin-dist/ ``` ### API 连接数据库失败 ```bash # 检查数据库连通性 docker exec -it overseas-appointment-api sh node -e "require('./src/models').sequelize.authenticate().then(() => console.log('OK')).catch(console.error)" ``` ### 查看实时日志 ```bash docker-compose logs -f --tail=100 ```