- 新增 deploy/ 目录包含 Docker 部署配置、数据库脚本、部署脚本 - 更新 .gitignore 忽略 deploy 构建产物 - 添加 AGENTS.md AI Agent 指南 - 添加项目构建脚本 build.sh
440 lines
8.3 KiB
Markdown
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. 问题描述和复现步骤
|