# =============================================================================
# 禾瑞思航·低代码 AI 模型训练系统 Docker Compose（示例配置，可按环境修改）
# =============================================================================
# 架构说明：
#   - 前端：Vue 3 + Vite 构建为静态资源，由 FastAPI 在 8000 端口统一对外服务
#   - 后端：FastAPI + Uvicorn，提供 /api 接口与模型训练/推理能力
#   - 数据库：默认 SQLite（industrial_ocr.db），数据通过卷持久化到宿主机
#
# 快速启动：
#   docker compose up -d --build
#
# 本地开发（前后端分离热更新）：
#   后端：.\start.ps1  或  start.bat
#   前端：npm run dev   （默认 http://localhost:3000，API 代理到 8000）
#
# 预构建镜像部署（取消 app.build 并启用 image）：
#   image: your-registry.cn-hangzhou.cr.aliyuncs.com/your-namespace/islandfox:${APP_IMAGE_TAG:-latest}
# =============================================================================

services:
  # 主应用（FastAPI 后端 + Vue 前端静态资源）
  app:
    build:
      context: .
      dockerfile: Dockerfile
    # 若使用远程镜像，注释 build 并启用下行：
    # image: your-registry.cn-hangzhou.cr.aliyuncs.com/your-namespace/islandfox:${APP_IMAGE_TAG:-latest}
    # pull_policy: always
    container_name: islandfox-app
    restart: unless-stopped
    environment:
      - TZ=Asia/Shanghai
      - PYTHONUNBUFFERED=1
    # 宿主机端口：默认 8000；若端口冲突，在项目根目录 .env 写入 APP_PUBLISH_PORT=8001
    ports:
      - "${APP_PUBLISH_PORT:-8000}:8000"
    volumes:
      # 上传文件（标注图片、检测结果等）
      - ./uploads:/app/uploads
      # 数据集与标注数据
      - ./data:/app/data
      # 训练产物与模型文件
      - ./models:/app/models
      # SQLite 数据库（默认路径 /app/industrial_ocr.db；首次部署前在宿主机执行: New-Item -ItemType File -Path industrial_ocr.db -Force）
      - ./industrial_ocr.db:/app/industrial_ocr.db
      # 应用日志
      - app_logs:/app/logs
    networks:
      - islandfox-network
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
        compress: "true"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/docs"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s
    # 如需在 Linux 宿主机使用 USB 摄像头，可取消注释（Windows/macOS 请改用 RTSP/HTTP 流地址）
    # devices:
    #   - /dev/video0:/dev/video0

volumes:
  app_logs:
    driver: local

networks:
  islandfox-network:
    driver: bridge
