Files
CapacityReport/DEPLOY.md
T

3.4 KiB
Raw Blame History

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:

  1. 服务端配置:mysql/conf.d/custom.cnf 中 local_infile = ON
  2. 启动参数:--local-infile=ON
  3. 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

  1. 检查 MySQL 是否就绪:

    docker-compose logs mysql
    
  2. 验证 MySQL 健康状态:

    docker exec capacity-mysql mysqladmin ping -uroot -pgmcc123
    
  3. 检查 Configure.json 中 host 设置是否为 mysql

LOAD DATA INFILE 不工作

  1. 检查 MySQL 变量:

    docker exec -it capacity-mysql mysql -uroot -pgmcc123 -e "SHOW VARIABLES LIKE 'local_infile';"
    
  2. 检查配置文件:

    docker exec -it capacity-mysql cat /etc/mysql/conf.d/custom.cnf
    

cache 目录权限问题

chmod -R 777 cache/