services: # 1. 机器人主逻辑服务 bot: build: ./bot container_name: accounting_bot restart: always env_file: .env depends_on: db: condition: service_healthy # 确保数据库就绪后再启动 vlm-service: condition: service_started volumes: - ./bot:/app - ./data/temp:/app/temp networks: - accounting_net environment: - BOT_PROXY=${GLOBAL_PROXY} # 注入代理变量 - PYTHONUNBUFFERED=1 # 关键:禁用 Python 的输出缓冲 # 2. 本地视觉大模型 (Ollama + Qwen3-VL) vlm-service: image: ollama/ollama:latest container_name: vlm_service runtime: nvidia # 关键:直接调用 NVIDIA 运行时,解决权限和 OCI 错误 environment: - NVIDIA_VISIBLE_DEVICES=all - OLLAMA_KEEP_ALIVE=24h # 让模型常驻显存,提高多人使用的响应速度 volumes: - ./data/ollama:/root/.ollama restart: always networks: - accounting_net # 3. 数据库服务 (PostgreSQL) db: image: postgres:15-alpine container_name: accounting_db environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - ./data/postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 restart: always networks: - accounting_net networks: accounting_net: driver: bridge