diff --git a/docs/project_context.md b/docs/project_context.md index cd04df2..878070e 100644 --- a/docs/project_context.md +++ b/docs/project_context.md @@ -1094,3 +1094,12 @@ CellData 处理日志细化(`app/services/cell_data.py`): - 前端 `npm ci && npm run build`(npm registry)。 - 镜像 `pip install -r requirements.txt`(PyPI)+ 基础镜像 `python:3.13.11-slim`(Docker registry;Dockerfile 已注明内网无 dockerhub 时需本地预先存在该镜像)。 - 离线重建可选做法:内网 PyPI/npm 镜像源,或预下载 wheels + `pip install --no-index --find-links`、`npm ci --offline`。 + +## 2026-08-05:部署第二套独立 CapacityReport 实例 + +- 新增 `packaging/docker-compose.capacityrepost.yml`,只编排 Web 与 MySQL:容器名固定为 `capacityrepost-web`、`capacityrepost-mysql`。 +- Web 发布宿主机 `19082` 到容器 `9081`;MySQL 只 `expose 3306`,不发布宿主机端口,数据导入导出统一走 Web。 +- 两个容器仅加入显式桥接网络 `capacityrepost-network`;运行数据使用独立命名卷 `capacityrepost-web-data`、`capacityrepost-mysql-data`,不复用旧实例资源。 +- Web 首次启动通过 `DB_HOST=capacityrepost-mysql` 写入新数据卷内的 `Configure.json`;MySQL 初始化独立的 `CapacityReport`、`celldata` 数据库。 +- 当前代码镜像使用不可变标签 `capacityrepost-web:a66ce4c`,服务器部署目录为 `/opt/capacityrepost`。健康检查 `GET /health` 已验证应用与 MySQL 均正常,首页可访问。 +- 同机旧实例 `capacity-report-app`(19081)与 `capacity-mysql`(13306)是受保护资源;部署第二实例时禁止对旧容器执行停止、重建、改名、改网络、改卷或 compose down。 diff --git a/packaging/docker-compose.capacityrepost.yml b/packaging/docker-compose.capacityrepost.yml new file mode 100644 index 0000000..3dddf71 --- /dev/null +++ b/packaging/docker-compose.capacityrepost.yml @@ -0,0 +1,67 @@ +services: + web: + image: capacityrepost-web:a66ce4c + container_name: capacityrepost-web + restart: unless-stopped + ports: + - "19082:9081" + volumes: + - capacityrepost-web-data:/data + environment: + TZ: Asia/Shanghai + PYTHONUNBUFFERED: "1" + DB_HOST: capacityrepost-mysql + DB_PORT: "3306" + DB_USER: root + DB_PASSWD: gmcc123 + MAIN_DB_NAME: CapacityReport + CELLDATA_DB_NAME: celldata + depends_on: + mysql: + condition: service_healthy + networks: + - capacityrepost-network + + mysql: + image: capacity-mysql:8.0.44 + container_name: capacityrepost-mysql + restart: unless-stopped + expose: + - "3306" + volumes: + - capacityrepost-mysql-data:/var/lib/mysql + - ./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: 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 + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pgmcc123"] + interval: 10s + timeout: 5s + retries: 10 + start_period: 30s + networks: + - capacityrepost-network + +networks: + capacityrepost-network: + name: capacityrepost-network + driver: bridge + +volumes: + capacityrepost-web-data: + name: capacityrepost-web-data + capacityrepost-mysql-data: + name: capacityrepost-mysql-data