docker-compose.yml 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # =============================================================================
  2. # 禾瑞思航·低代码 AI 模型训练系统 Docker Compose(示例配置,可按环境修改)
  3. # =============================================================================
  4. # 架构说明:
  5. # - 前端:Vue 3 + Vite 构建为静态资源,由 FastAPI 在 8000 端口统一对外服务
  6. # - 后端:FastAPI + Uvicorn,提供 /api 接口与模型训练/推理能力
  7. # - 数据库:默认 SQLite(industrial_ocr.db),数据通过卷持久化到宿主机
  8. #
  9. # 快速启动:
  10. # docker compose up -d --build
  11. #
  12. # 本地开发(前后端分离热更新):
  13. # 后端:.\start.ps1 或 start.bat
  14. # 前端:npm run dev (默认 http://localhost:3000,API 代理到 8000)
  15. #
  16. # 预构建镜像部署(取消 app.build 并启用 image):
  17. # image: your-registry.cn-hangzhou.cr.aliyuncs.com/your-namespace/islandfox:${APP_IMAGE_TAG:-latest}
  18. # =============================================================================
  19. services:
  20. # 主应用(FastAPI 后端 + Vue 前端静态资源)
  21. app:
  22. build:
  23. context: .
  24. dockerfile: Dockerfile
  25. # 若使用远程镜像,注释 build 并启用下行:
  26. # image: your-registry.cn-hangzhou.cr.aliyuncs.com/your-namespace/islandfox:${APP_IMAGE_TAG:-latest}
  27. # pull_policy: always
  28. container_name: islandfox-app
  29. restart: unless-stopped
  30. environment:
  31. - TZ=Asia/Shanghai
  32. - PYTHONUNBUFFERED=1
  33. # 宿主机端口:默认 8000;若端口冲突,在项目根目录 .env 写入 APP_PUBLISH_PORT=8001
  34. ports:
  35. - "${APP_PUBLISH_PORT:-8000}:8000"
  36. volumes:
  37. # 上传文件(标注图片、检测结果等)
  38. - ./uploads:/app/uploads
  39. # 数据集与标注数据
  40. - ./data:/app/data
  41. # 训练产物与模型文件
  42. - ./models:/app/models
  43. # SQLite 数据库(默认路径 /app/industrial_ocr.db;首次部署前在宿主机执行: New-Item -ItemType File -Path industrial_ocr.db -Force)
  44. - ./industrial_ocr.db:/app/industrial_ocr.db
  45. # 应用日志
  46. - app_logs:/app/logs
  47. networks:
  48. - islandfox-network
  49. logging:
  50. driver: "json-file"
  51. options:
  52. max-size: "10m"
  53. max-file: "3"
  54. compress: "true"
  55. healthcheck:
  56. test: ["CMD", "curl", "-f", "http://localhost:8000/docs"]
  57. interval: 30s
  58. timeout: 10s
  59. retries: 3
  60. start_period: 60s
  61. # 如需在 Linux 宿主机使用 USB 摄像头,可取消注释(Windows/macOS 请改用 RTSP/HTTP 流地址)
  62. # devices:
  63. # - /dev/video0:/dev/video0
  64. volumes:
  65. app_logs:
  66. driver: local
  67. networks:
  68. islandfox-network:
  69. driver: bridge