- 新增 deploy/config/backend/application-prod.yaml 生产环境配置 - 新增 deploy/docker-compose-simple.yml 简化部署脚本
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. 克隆项目
cd /path/to/xlcp
2. 配置环境变量
编辑 .env 文件,根据需要修改配置:
vi deploy/.env
关键配置项:
MYSQL_ROOT_PASSWORD: MySQL root 密码REDIS_PASSWORD: Redis 密码BACKEND_PORT: 后端服务端口 (默认 48080)FRONTEND_PORT: 前端服务端口 (默认 80)
3. 构建镜像
cd deploy
./scripts/build.sh
4. 启动服务
docker compose up -d
或使用 docker-compose:
docker-compose up -d
5. 查看日志
# 查看所有服务日志
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. 停止服务
docker compose down
7. 完全清理
docker compose down -v # 同时删除数据卷
方式二: 远程部署 (推荐生产环境)
1. 配置远程服务器信息
# 方式 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. 部署流程
脚本会自动执行:
- ✅ 检查 SSH 连接
- ✅ 检查远程 Docker 环境
- ✅ 创建远程目录结构
- ✅ 上传部署文件
- ✅ 启动所有容器
- ✅ 健康检查
- ✅ 显示访问信息
3. 访问服务
部署完成后:
- 前端: http://192.168.10.150/
- 后端 API: http://192.168.10.150:48080/admin-api/
- 健康检查: http://192.168.10.150:48080/actuator/health
4. 查看远程日志
ssh root@192.168.10.150
cd /projects/data/xlcp
docker compose logs -f
🔧 服务管理
查看服务状态
docker compose ps
重启单个服务
# 重启后端
docker compose restart backend
# 重启前端
docker compose restart frontend
# 重启 MySQL
docker compose restart mysql
进入容器
# 进入后端容器
docker compose exec backend sh
# 进入 MySQL 容器
docker compose exec mysql bash
# 进入 Redis 容器
docker compose exec redis sh
更新服务
# 1. 重新构建镜像
docker compose build backend frontend
# 2. 重启服务
docker compose up -d backend frontend
📊 数据库管理
初始化数据库
cd deploy
./scripts/init-db.sh
手动执行 SQL
# 进入 MySQL 容器
docker compose exec mysql bash
# 连接 MySQL
mysql -u root -pPrison2024!@ prison
# 执行 SQL
source /docker-entrypoint-initdb.d/01-prison_schema.sql
数据库备份
# 备份整个数据库
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
查看数据库
docker exec xlcp-mysql mysql -u root -pPrison2024!@ prison -e "SHOW TABLES;"
🔍 故障排查
服务无法启动
- 查看服务日志
docker compose logs backend
docker compose logs frontend
- 检查端口占用
netstat -tlnp | grep -E '3306|6379|48080|80'
- 检查磁盘空间
df -h
docker system df
健康检查失败
- 检查后端服务是否启动
curl http://localhost:48080/actuator/health
- 检查前端服务是否启动
curl http://localhost/
- 查看详细日志
docker compose logs -f backend
数据库连接失败
- 检查 MySQL 容器状态
docker compose ps mysql
docker compose logs mysql
- 测试数据库连接
docker exec xlcp-mysql mysqladmin ping -h localhost -u root -pPrison2024!@
- 检查配置文件
cat config/application-prod.yaml | grep datasource
前端页面无法访问
- 检查 Nginx 配置
docker compose exec frontend nginx -t
- 查看 Nginx 日志
docker compose logs frontend
- 检查静态文件
docker compose exec frontend ls -la /usr/share/nginx/html
📈 监控和日志
实时监控
# 监控所有服务
docker compose logs -f
# 监控特定服务
docker compose logs -f backend
查看日志文件
# 后端日志 (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
资源监控
# 查看容器资源使用
docker stats
# 查看磁盘使用
docker system df
# 清理未使用的资源
docker system prune -a
🔒 安全建议
-
修改默认密码
- MySQL root 密码
- Redis 密码
-
配置防火墙
# 仅开放必要端口 firewall-cmd --permanent --add-port=48080/tcp firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload -
启用 HTTPS
- 准备 SSL 证书
- 放置到
deploy/docker/ssl/目录 - 修改
nginx.conf配置
-
定期备份数据
- 数据库备份
- 上传文件备份
- 配置文件备份
📚 附录
环境变量说明
| 变量名 | 默认值 | 说明 |
|---|---|---|
| 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 服务 |
常用命令
# 查看 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
📞 技术支持
如遇问题,请提供以下信息:
- Docker 版本:
docker --version - Docker Compose 版本:
docker compose version - 操作系统版本:
cat /etc/os-release - 错误日志:
docker compose logs - 问题描述和复现步骤