xlcp/deploy/README.md
tangweijie bc40155ef0 chore: 添加部署配置及文档
- 新增 deploy/ 目录包含 Docker 部署配置、数据库脚本、部署脚本
- 更新 .gitignore 忽略 deploy 构建产物
- 添加 AGENTS.md AI Agent 指南
- 添加项目构建脚本 build.sh
2026-01-22 21:10:49 +08:00

440 lines
8.3 KiB
Markdown

# XL监狱综合管理平台 - Docker 部署指南
## 📋 目录结构
```
deploy/
├── docker-compose.yml # Docker Compose 编排文件
├── .env # 环境变量配置
├── .gitignore # Git 忽略文件
├── config/
│ └── application-prod.yaml # 生产环境配置
├── data/ # 数据目录(自动创建)
│ ├── mysql/ # MySQL 数据文件
│ ├── redis/ # Redis 数据文件
│ └── upload/ # 上传文件
├── logs/ # 日志目录(自动创建)
│ ├── backend/ # 后端日志
│ └── nginx/ # Nginx 日志
├── docker/
│ └── frontend/
│ └── nginx.conf # Nginx 配置
├── sql/
│ └── prison_schema.sql # 数据库初始化脚本
└── scripts/
├── build.sh # 镜像构建脚本(已弃用)
├── deploy.sh # 远程部署脚本(已弃用)
├── init-db.sh # 数据库初始化脚本
└── init-permissions.sh # 权限初始化脚本
```
## 🚀 快速开始
### 前置要求
- Docker 20.10+
- Docker Compose 2.0+ (或 docker-compose 1.29+)
- 服务器至少 4GB 内存, 20GB 磁盘空间
- SSH 免密登录到目标服务器 (如果远程部署)
### 方式一: 本地部署
#### 1. 克隆项目
```bash
cd /path/to/xlcp
```
#### 2. 配置环境变量
编辑 `.env` 文件,根据需要修改配置:
```bash
vi deploy/.env
```
关键配置项:
- `MYSQL_ROOT_PASSWORD`: MySQL root 密码
- `REDIS_PASSWORD`: Redis 密码
- `BACKEND_PORT`: 后端服务端口 (默认 48080)
- `FRONTEND_PORT`: 前端服务端口 (默认 80)
#### 3. 构建镜像
```bash
cd deploy
./scripts/build.sh
```
#### 4. 启动服务
```bash
docker compose up -d
```
或使用 docker-compose:
```bash
docker-compose up -d
```
#### 5. 查看日志
```bash
# 查看所有服务日志
docker compose logs -f
# 查看特定服务日志
docker compose logs -f backend
docker compose logs -f frontend
docker compose logs -f mysql
docker compose logs -f redis
```
#### 6. 停止服务
```bash
docker compose down
```
#### 7. 完全清理
```bash
docker compose down -v # 同时删除数据卷
```
### 方式二: 远程部署 (推荐生产环境)
#### 1. 配置远程服务器信息
```bash
# 方式 1: 使用默认配置 (root@192.168.10.150)
cd deploy
./scripts/deploy.sh
# 方式 2: 自定义服务器
REMOTE_SERVER=user@your-server-ip ./scripts/deploy.sh
# 方式 3: 自定义部署目录
REMOTE_SERVER=root@192.168.10.150 REMOTE_DEPLOY_DIR=/projects/data/xlcp ./scripts/deploy.sh
```
#### 2. 部署流程
脚本会自动执行:
1. ✅ 检查 SSH 连接
2. ✅ 检查远程 Docker 环境
3. ✅ 创建远程目录结构
4. ✅ 上传部署文件
5. ✅ 启动所有容器
6. ✅ 健康检查
7. ✅ 显示访问信息
#### 3. 访问服务
部署完成后:
- 前端: http://192.168.10.150/
- 后端 API: http://192.168.10.150:48080/admin-api/
- 健康检查: http://192.168.10.150:48080/actuator/health
#### 4. 查看远程日志
```bash
ssh root@192.168.10.150
cd /projects/data/xlcp
docker compose logs -f
```
## 🔧 服务管理
### 查看服务状态
```bash
docker compose ps
```
### 重启单个服务
```bash
# 重启后端
docker compose restart backend
# 重启前端
docker compose restart frontend
# 重启 MySQL
docker compose restart mysql
```
### 进入容器
```bash
# 进入后端容器
docker compose exec backend sh
# 进入 MySQL 容器
docker compose exec mysql bash
# 进入 Redis 容器
docker compose exec redis sh
```
### 更新服务
```bash
# 1. 重新构建镜像
docker compose build backend frontend
# 2. 重启服务
docker compose up -d backend frontend
```
## 📊 数据库管理
### 初始化数据库
```bash
cd deploy
./scripts/init-db.sh
```
### 手动执行 SQL
```bash
# 进入 MySQL 容器
docker compose exec mysql bash
# 连接 MySQL
mysql -u root -pPrison2024!@ prison
# 执行 SQL
source /docker-entrypoint-initdb.d/01-prison_schema.sql
```
### 数据库备份
```bash
# 备份整个数据库
docker exec xlcp-mysql mysqldump -u root -pPrison2024!@ prison > prison_backup_$(date +%Y%m%d).sql
# 恢复数据库
docker exec -i xlcp-mysql mysql -u root -pPrison2024!@ prison < prison_backup_20250122.sql
```
### 查看数据库
```bash
docker exec xlcp-mysql mysql -u root -pPrison2024!@ prison -e "SHOW TABLES;"
```
## 🔍 故障排查
### 服务无法启动
1. 查看服务日志
```bash
docker compose logs backend
docker compose logs frontend
```
2. 检查端口占用
```bash
netstat -tlnp | grep -E '3306|6379|48080|80'
```
3. 检查磁盘空间
```bash
df -h
docker system df
```
### 健康检查失败
1. 检查后端服务是否启动
```bash
curl http://localhost:48080/actuator/health
```
2. 检查前端服务是否启动
```bash
curl http://localhost/
```
3. 查看详细日志
```bash
docker compose logs -f backend
```
### 数据库连接失败
1. 检查 MySQL 容器状态
```bash
docker compose ps mysql
docker compose logs mysql
```
2. 测试数据库连接
```bash
docker exec xlcp-mysql mysqladmin ping -h localhost -u root -pPrison2024!@
```
3. 检查配置文件
```bash
cat config/application-prod.yaml | grep datasource
```
### 前端页面无法访问
1. 检查 Nginx 配置
```bash
docker compose exec frontend nginx -t
```
2. 查看 Nginx 日志
```bash
docker compose logs frontend
```
3. 检查静态文件
```bash
docker compose exec frontend ls -la /usr/share/nginx/html
```
## 📈 监控和日志
### 实时监控
```bash
# 监控所有服务
docker compose logs -f
# 监控特定服务
docker compose logs -f backend
```
### 查看日志文件
```bash
# 后端日志 (Docker 内部)
docker compose exec backend cat /logs/yudao-server.log
# Nginx 日志
docker compose exec frontend tail -f /var/log/nginx/access.log
docker compose exec frontend tail -f /var/log/nginx/error.log
# MySQL 日志
docker compose exec mysql tail -f /var/log/mysql/error.log
```
### 资源监控
```bash
# 查看容器资源使用
docker stats
# 查看磁盘使用
docker system df
# 清理未使用的资源
docker system prune -a
```
## 🔒 安全建议
1. **修改默认密码**
- MySQL root 密码
- Redis 密码
2. **配置防火墙**
```bash
# 仅开放必要端口
firewall-cmd --permanent --add-port=48080/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
```
3. **启用 HTTPS**
- 准备 SSL 证书
- 放置到 `deploy/docker/ssl/` 目录
- 修改 `nginx.conf` 配置
4. **定期备份数据**
- 数据库备份
- 上传文件备份
- 配置文件备份
## 📚 附录
### 环境变量说明
| 变量名 | 默认值 | 说明 |
|---------|---------|------|
| MYSQL_ROOT_PASSWORD | Prison2024!@ | MySQL root 密码 |
| MYSQL_DATABASE | prison | 数据库名称 |
| MYSQL_PORT | 3306 | MySQL 端口 |
| REDIS_PASSWORD | Prison2024!@ | Redis 密码 |
| REDIS_PORT | 6379 | Redis 端口 |
| BACKEND_PORT | 48080 | 后端服务端口 |
| FRONTEND_PORT | 80 | 前端服务端口 |
| SPRING_PROFILES_ACTIVE | prod | Spring 环境配置 |
| JAVA_OPTS | -Xms512m -Xmx1024m | JVM 参数 |
### 端口说明
| 服务 | 容器端口 | 宿主机端口 | 说明 |
|------|-----------|------------|------|
| MySQL | 3306 | 3306 | 数据库服务 |
| Redis | 6379 | 6379 | 缓存服务 |
| Backend | 48080 | 48080 | 后端 API 服务 |
| Frontend | 80 | 80 | 前端 Web 服务 |
### 常用命令
```bash
# 查看 Docker 版本
docker --version
docker compose version
# 查看容器列表
docker ps -a
# 查看镜像列表
docker images | grep xlcp
# 查看网络
docker network ls
docker network inspect xlcp_xlcp-network
# 查看数据卷
docker volume ls
docker volume inspect xlcp_mysql-data
```
## 🆘 获取帮助
- 查看部署脚本帮助: `./scripts/deploy.sh --help`
- 查看项目文档: `/README.md`
- 查看后端配置: `/backend/README.md`
- 查看前端配置: `/frontend/README.md`
## 📞 技术支持
如遇问题,请提供以下信息:
1. Docker 版本: `docker --version`
2. Docker Compose 版本: `docker compose version`
3. 操作系统版本: `cat /etc/os-release`
4. 错误日志: `docker compose logs`
5. 问题描述和复现步骤