# ============================================================================= # 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 对空串/缺失回退为随机 UUID(node-), # 这样 `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: