179 lines
3.4 KiB
Markdown
179 lines
3.4 KiB
Markdown
# CapacityReport Docker 部署指南
|
||
|
||
## 环境要求
|
||
|
||
- Docker Engine 20.10+
|
||
- Docker Compose 2.0+
|
||
|
||
## 快速启动
|
||
|
||
```bash
|
||
# 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 查看日志
|
||
docker-compose logs -f
|
||
|
||
# 停止服务
|
||
docker-compose down
|
||
```
|
||
|
||
## 内网离线部署
|
||
|
||
### 步骤1:准备镜像(在有外网的机器上)
|
||
|
||
```bash
|
||
# 拉取所需镜像
|
||
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:加载镜像(在目标机器上)
|
||
|
||
```bash
|
||
# 加载镜像
|
||
docker load -i capacity-images.tar
|
||
```
|
||
|
||
### 步骤3:构建并启动
|
||
|
||
```bash
|
||
# 构建应用镜像
|
||
docker-compose build
|
||
|
||
# 启动服务
|
||
docker-compose up -d
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
### 数据库连接
|
||
|
||
Docker 环境下,需要修改 `Configure.json` 中的数据库地址:
|
||
|
||
```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`:
|
||
|
||
1. 服务端配置:`mysql/conf.d/custom.cnf` 中 `local_infile = ON`
|
||
2. 启动参数:`--local-infile=ON`
|
||
3. Python 客户端:PyMySQL 连接时 `local_infile=True`
|
||
|
||
验证是否启用:
|
||
|
||
```bash
|
||
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 卷) |
|
||
|
||
## 常用命令
|
||
|
||
```bash
|
||
# 查看运行状态
|
||
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
|
||
|
||
1. 检查 MySQL 是否就绪:
|
||
```bash
|
||
docker-compose logs mysql
|
||
```
|
||
|
||
2. 验证 MySQL 健康状态:
|
||
```bash
|
||
docker exec capacity-mysql mysqladmin ping -uroot -pgmcc123
|
||
```
|
||
|
||
3. 检查 Configure.json 中 host 设置是否为 `mysql`
|
||
|
||
### LOAD DATA INFILE 不工作
|
||
|
||
1. 检查 MySQL 变量:
|
||
```bash
|
||
docker exec -it capacity-mysql mysql -uroot -pgmcc123 -e "SHOW VARIABLES LIKE 'local_infile';"
|
||
```
|
||
|
||
2. 检查配置文件:
|
||
```bash
|
||
docker exec -it capacity-mysql cat /etc/mysql/conf.d/custom.cnf
|
||
```
|
||
|
||
### cache 目录权限问题
|
||
|
||
```bash
|
||
chmod -R 777 cache/
|
||
```
|