3.4 KiB
3.4 KiB
CapacityReport Docker 部署指南
环境要求
- Docker Engine 20.10+
- Docker Compose 2.0+
快速启动
# 启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
内网离线部署
步骤1:准备镜像(在有外网的机器上)
# 拉取所需镜像
docker pull python:3.11-slim
docker pull mysql:8.0
# 导出为文件
docker save -o capacity-images.tar python:3.11-slim mysql:8.0
# 将 capacity-images.tar 传输到目标机器
步骤2:加载镜像(在目标机器上)
# 加载镜像
docker load -i capacity-images.tar
步骤3:构建并启动
# 构建应用镜像
docker-compose build
# 启动服务
docker-compose up -d
配置说明
数据库连接
Docker 环境下,需要修改 Configure.json 中的数据库地址:
{
"MySQL_DBInfo": {
"host": "mysql",
"port": 3306,
"user": "root",
"passwd": "gmcc123",
"dbname": "CapacityReport"
}
}
注意:
- Docker Compose 中 host 应设置为
mysql(服务名),而不是localhost或127.0.0.1 - 数据库
CapacityReport会在容器首次启动时自动创建(使用 utf8mb4 字符集) - 如果数据目录已存在(从持久化卷恢复),数据库不会被重复创建,这是安全的
端口映射
| 服务 | 端口 | 说明 |
|---|---|---|
| app | 9081 | Web 应用 |
| mysql | 3306 | MySQL 数据库 |
LOAD DATA INFILE 支持
MySQL 容器已配置支持 LOAD DATA LOCAL INFILE:
- 服务端配置:
mysql/conf.d/custom.cnf中local_infile = ON - 启动参数:
--local-infile=ON - Python 客户端:PyMySQL 连接时
local_infile=True
验证是否启用:
docker exec -it capacity-mysql mysql -uroot -pgmcc123 -e "SHOW VARIABLES LIKE 'local_infile';"
预期输出:
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
数据持久化
| 路径 | 说明 |
|---|---|
| ./cache | 处理缓存和历史记录 |
| ./logs | 应用日志 |
| mysql-data | MySQL 数据(Docker 卷) |
常用命令
# 查看运行状态
docker-compose ps
# 查看应用日志
docker-compose logs -f app
# 查看 MySQL 日志
docker-compose logs -f mysql
# 重启应用
docker-compose restart app
# 进入应用容器
docker exec -it capacity-report bash
# 进入 MySQL
docker exec -it capacity-mysql mysql -uroot -pgmcc123
# 备份数据库
docker exec capacity-mysql mysqldump -uroot -pgmcc123 CapacityReport > backup.sql
# 恢复数据库
docker exec -i capacity-mysql mysql -uroot -pgmcc123 CapacityReport < backup.sql
# 清空数据重新开始
docker-compose down -v
docker-compose up -d
故障排查
应用无法连接 MySQL
-
检查 MySQL 是否就绪:
docker-compose logs mysql -
验证 MySQL 健康状态:
docker exec capacity-mysql mysqladmin ping -uroot -pgmcc123 -
检查 Configure.json 中 host 设置是否为
mysql
LOAD DATA INFILE 不工作
-
检查 MySQL 变量:
docker exec -it capacity-mysql mysql -uroot -pgmcc123 -e "SHOW VARIABLES LIKE 'local_infile';" -
检查配置文件:
docker exec -it capacity-mysql cat /etc/mysql/conf.d/custom.cnf
cache 目录权限问题
chmod -R 777 cache/