# ============================================================================= # DCTS (Distributed Computing TLUSTY/SYNSPEC) Docker Compose 容器集群部署编排 # ============================================================================= # # 快速启动: # 1. docker compose up -d --build # 2. 访问 Dashboard 控制台: http://localhost:8090 # # 增加/减少计算节点: # 每个物理设备部署一个 node 容器(多 slot 并行由 DCTS_MAX_SLOTS 控制), # 通过修改本文件 node 服务的 image / env 或在多台设备上分别运行实现分布式计算。 # # 停止集群: # docker compose down # ============================================================================= services: # ─── 1. DCTS 主控/Web 节点 (Server + Dashboard) ───────────────────────────── server: build: context: . dockerfile: Dockerfile.server # 国内网络构建时在 .env 里设 USE_MIRRORS=1 / CARGO_MIRROR=1 换国内源;默认 0 直连官方源。 args: USE_MIRRORS: ${USE_MIRRORS:-0} CARGO_MIRROR: ${CARGO_MIRROR:-0} 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 # 同 server:国内网络构建时在 .env 里设 USE_MIRRORS=1 / CARGO_MIRROR=1。 args: USE_MIRRORS: ${USE_MIRRORS:-0} CARGO_MIRROR: ${CARGO_MIRROR:-0} image: dcts-node:latest container_name: dcts-node restart: unless-stopped env_file: - .env environment: - 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 —— node 经 include_bytes! 嵌入 tlusty/synspec 二进制 + # 从 server /api/data/* 下载原子数据文件,从不读取 /app/assets,挂载它纯属搬运 # 2.1GB 空数据、浪费磁盘与带宽。 - ./data:/app/data