Files
CapacityReport/docker-compose.yml
T

99 lines
3.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CapacityReport Docker 编排文件
# 用于内网离线部署
#
# 使用方法:
# docker-compose up -d # 启动所有服务
# docker-compose down # 停止所有服务
# docker-compose logs -f app # 查看应用日志
# docker-compose logs -f mysql # 查看 MySQL 日志
#
# 内网部署准备(在有外网的机器上):
# docker pull python:3.11-slim
# docker pull mysql:8.0 # 或指定版本: mysql:8.0.44
# docker save -o capacity-images.tar python:3.11-slim mysql:8.0
# # 将 capacity-images.tar 传到目标机器后执行:
# docker load -i capacity-images.tar
version: '3.8'
services:
# 容量报表应用
app:
build:
context: .
dockerfile: Dockerfile
container_name: capacity-report
restart: unless-stopped
ports:
- "9081:9081"
volumes:
# 持久化数据
- ./cache:/app/cache
- ./Configure.json:/app/Configure.json
- ./ReportScript.sql:/app/ReportScript.sql
# 日志目录
- ./logs:/var/log/supervisor
environment:
- TZ=Asia/Shanghai
- PYTHONUNBUFFERED=1
- SUPERVISOR_ENABLED=1
depends_on:
mysql:
condition: service_healthy
networks:
- capacity-network
# MySQL 数据库
# 版本说明:
# - mysql:8.0 # 自动使用最新的 8.0.x 版本(推荐,当前最新为 8.0.44)
# - mysql:8.0.44 # 固定版本,适合生产环境(2025-11-04 发布)
# - mysql:8.0.43 # 其他稳定版本
# 注意:MySQL 9.5 目前没有官方 Docker 镜像,建议使用 8.0 系列
# LOAD DATA INFILE 支持:MySQL 8.0 完全支持,已通过配置启用
mysql:
image: mysql:8.0.44
container_name: capacity-mysql
restart: unless-stopped
ports:
- "3306:3306"
volumes:
# 数据持久化
- mysql-data:/var/lib/mysql
# 自定义配置(启用 LOAD DATA INFILE)
- ./mysql/conf.d:/etc/mysql/conf.d:ro
# 初始化脚本(仅在首次启动时执行)
- ./mysql/init:/docker-entrypoint-initdb.d:ro
environment:
- TZ=Asia/Shanghai
- MYSQL_ROOT_PASSWORD=gmcc123
# MYSQL_DATABASE: 仅在首次初始化时创建数据库
# 如果数据目录已存在,此变量会被忽略(安全)
# 初始化脚本 mysql/init/01-init-db.sql 会确保数据库以 utf8mb4 字符集创建
- MYSQL_DATABASE=CapacityReport
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --local-infile=ON
- --secure-file-priv=
- --max_allowed_packet=256M
- --innodb_buffer_pool_size=512M
- --innodb_log_file_size=128M
- --innodb_flush_log_at_trx_commit=2
- --sync_binlog=0
networks:
- capacity-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pgmcc123"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
capacity-network:
driver: bridge
volumes:
mysql-data:
driver: local