version: "3.8"

services:
  postgres:
    image: pgvector/pgvector:pg16
    container_name: qwen-agent-postgres
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=E5ACJo6zJub4QS
      - POSTGRES_DB=agent_db
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s

  qwen-agent:
    build:
      context: .
      dockerfile: Dockerfile.modelscope
    container_name: qwen-agent-api
    ports:
      - "8001:8001"
    environment:
      # 应用配置
      - BACKEND_HOST=http://api-dev.gbase.ai
      - MAX_CONTEXT_TOKENS=262144
      - DEFAULT_THINKING_ENABLE=true
      - ES_HOST=http://host.docker.internal:9200
      - RAGFLOW_API_URL=http://host.docker.internal:1080
      - RAGFLOW_API_KEY=ragflow-MRqxnDnYZ1yp5kklDMIlKH4f1qezvXIngSMGPhu1AG8
      - ITINERARY_API_URL=http://host.docker.internal:2012/api/itineraries/
      # PostgreSQL 配置
      - CHECKPOINT_DB_URL=postgresql://postgres:E5ACJo6zJub4QS@postgres:5432/agent_db
      - NEW_API_BASE_URL=http://host.docker.internal:3001
      - R2_UPLOAD_CONFIG=/app/config/local-upload.yaml
    volumes:
      # 挂载项目数据目录
      - ./projects:/app/projects
      - ./models:/app/models
      - ./public:/app/public
    depends_on:
      postgres:
        condition: service_healthy
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8001/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
volumes:
   postgres_data:
