services: prefect-server: image: prefecthq/prefect:3-python3.12 container_name: prefect-server command: prefect server start --host 0.0.0.0 environment: PREFECT_UI_API_URL: http://192.168.124.92:4200/api TZ: Asia/Shanghai ports: - "4200:4200" volumes: - prefect-data:/root/.prefect restart: unless-stopped prefect-worker: build: . container_name: prefect-worker # init 进程(tini)回收孤儿/僵尸:pull 步骤的 git 子进程被杀后没人 wait 会变僵尸, # 堆满 cgroup PID 配额后容器内无法再 fork(2026-09-17 事故根因) init: true environment: PREFECT_API_URL: http://prefect-server:4200/api TZ: Asia/Shanghai depends_on: - prefect-server volumes: # 设备监控(device-check flow):宿主机磁盘使用率 + Docker 容器状态 + 指标采样 - /var/run/docker.sock:/var/run/docker.sock - /:/host:ro - ./data/metrics:/data/metrics:ro deploy: resources: reservations: devices: # GPU 监控(nvidia-smi);依赖宿主机 nvidia-container-toolkit - driver: nvidia count: all capabilities: [gpu] restart: unless-stopped # 宿主机指标采样侧车:每 5 分钟写内存/swap/GPU,每日 du 快照(供 device-check 日报) metrics-agent: build: . container_name: metrics-agent command: python /opt/metrics_agent.py environment: TZ: Asia/Shanghai METRICS_DIR: /data/metrics volumes: - /:/host:ro - ./data/metrics:/data/metrics - ./scripts/metrics_agent.py:/opt/metrics_agent.py:ro deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] restart: unless-stopped volumes: prefect-data: