appointment_system/server/README.md
2025-12-20 18:04:10 +08:00

5.8 KiB
Raw Blame History

服务器部署配置

此目录包含生产环境的 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