Files
DCTS/docker-compose.yml
T
fmq 1bfa240cb0 feat(all): 源精度命名体系、工作流可观测台、节点停用管理与白名单归档
核心变更:

  1. GridAxisValue 源精度命名
     - 新增 GridAxisValue 类型,携带 f64 数值 + YAML 源书写文本(Deref 透明兼容算术)
     - config.rs 绕过 serde_yaml 归一化,逐 token 捕获轴值原文(logg: 5.0 → g5.0)
     - runner/executor/scheduler 全链路改用 DB TEXT 列权威 point_name,
       修复 REAL 列回读丢精度导致的 model_name 错配

  2. 工作流执行可观测台
     - 新增 stats/progress/points 三组 API(进度时间序列、经验速率 ETA、
       停滞预警、逐点明细分页、收敛性热力图数据)
     - 新增 workflow_progress_snapshots 表 + tasks/grid_points 耗时列
     - runner 携带 last_iter/worst_depth/n_depths 进 conv.json
     - 前端新增 hash 路由、工作流详情页(概览/网格点/收敛分析三 Tab)、YAML 编辑器

  3. 节点停用/启用管理
     - 新增 disabled 状态 + disable/enable API;停用节点保持心跳但停止分发,
       worker 空闲待命而非退出;移除 revoke API,token 失效统一走重发覆盖;
       移除 host_name 字段

  4. 白名单结果归档
     - 新增 result_filter 模块,只归档有语义产物,丢弃 Tlusty 中间单元(~2MB/模型)
     - executor 原子写入归档 + 200 点 LRU 上限

  5. 历史数据导入
     - sync_seeds 重写为 import_results:经 /admin/import_seed 标记 converged +
       按新版命名迁移产物树

  6. 部署与目录重规划
     - data/results→seeds、data/archive→result + migrate_data_dirs.sh
     - deploy.sh 增强(SSH 复用、Profile、远程 env);Dockerfile 瘦身

  7. 文档同步更新 api/database/architecture/deployment
2026-07-31 01:34:05 +08:00

85 lines
3.1 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.
# =============================================================================
# DCTS (Distributed Computing TLUSTY/SYNSPEC) Docker Compose 容器集群部署编排
# =============================================================================
#
# 快速启动:
# 1. docker compose up -d --build
# 2. 访问 Dashboard 控制台: http://localhost:8090
#
# 拓展计算节点数量:
# docker compose up -d --scale dcts-node=3
#
# 停止集群:
# docker compose down
# =============================================================================
services:
# ─── 1. DCTS 主控/Web 节点 (Server + Dashboard) ─────────────────────────────
server:
build:
context: .
dockerfile: Dockerfile.server
image: dcts-server:latest
container_name: dcts-server
restart: unless-stopped
# 开发/内网模式:直接暴露 8090。
# 公网模式(--profile public)下由 proxy 容器接管 443,此处端口暴露建议关闭或改为 127.0.0.1。
ports:
- "${DCTS_PORT:-8090}:8090"
env_file:
- .env
environment:
- DCTS_PORT=8090
- TZ=Asia/Shanghai
- DCTS_DB_PATH=/app/data/dcts.db
- DCTS_QUEUE_DB_PATH=/app/data/dcts_queue.db
- DCTS_SEEDS_DIR=/app/data/seeds
- DCTS_BACKUP_DIR=/app/data/backups
- DCTS_ASSETS_DIR=/app/assets
- LOG_DIR=/app/data/logs
- DCTS_LOG=info,server=debug
volumes:
- ./assets:/app/assets:ro
- ./workflows:/app/workflows:ro
- ./data:/app/data
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8090/healthz"]
interval: 15s
timeout: 5s
retries: 3
start_period: 10s
# ─── 2. DCTS Fortran 计算 Worker 节点 ──────────────────────────────────────
node:
build:
context: .
dockerfile: Dockerfile.node
image: dcts-node:latest
container_name: dcts-node
restart: unless-stopped
env_file:
- .env
environment:
# DCTS_NODE_ID 留空:由 config.rs 对空串/缺失回退为随机 UUIDnode-<uuid>),
# 这样 `docker compose --scale node=N` 时每个副本各得独立身份。
- TZ=Asia/Shanghai
- DCTS_SERVER_URL=${DCTS_SERVER_URL:-http://dcts-server:8090}
- DCTS_MAX_SLOTS=${DCTS_MAX_SLOTS:-4}
- DCTS_HEARTBEAT_SEC=${DCTS_HEARTBEAT_SEC:-15}
- LOG_DIR=${LOG_DIR:-/app/data/logs}
- DCTS_LOG=${DCTS_LOG:-info,node=debug}
# 完整计算结果归档目录:科学产物(.spec/.cont/.iden/各阶段快照/日志)落盘位置,
# 上报成功后从沙盒拷贝至此避免丢失。挂载在 ./data 下,已随卷持久化。
# DCTS_ARCHIVE_DIR 为旧名,向后兼容回退(node 代码优先读 DCTS_RESULT_DIR)。
- DCTS_RESULT_DIR=${DCTS_RESULT_DIR:-${DCTS_ARCHIVE_DIR:-/app/data/result}}
volumes:
- ./assets:/app/assets:ro
- ./data:/app/data
# 持久化卷(Caddy 证书与配置)
volumes:
caddy_data:
caddy_config: