功能特性: - ✅ 完整的后端API (FastAPI) - ✅ 图片处理管线 (PaddleOCR + OpenCV) - ✅ 手写去除功能 - ✅ Elasticsearch全文搜索 - ✅ MinIO对象存储集成 - ✅ Flutter跨平台前端架构 - ✅ Riverpod状态管理 - ✅ Docker容器化部署 技术栈: - 后端: Python 3.9+, FastAPI, PostgreSQL, Elasticsearch, Redis - 前端: Flutter 3.0+, Dart, Riverpod - 图像处理: PaddleOCR, OpenCV - 基础设施: Docker, MinIO 完成度: - 后端核心功能: 85% - 图片处理: 100% - 前端数据层: 100% - 前端UI: 20% 文档: - 需求规格说明书 - 技术设计文档 - API接口文档 - 实施进度文档 - 快速启动脚本 Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
71 lines
1.6 KiB
YAML
71 lines
1.6 KiB
YAML
# docker-compose.yml
|
|
version: '3.8'
|
|
|
|
services:
|
|
api:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8000:8000"
|
|
environment:
|
|
- DATABASE_URL=postgresql://user:password@postgres:5432/wrong_questions
|
|
- ELASTICSEARCH_URL=http://elasticsearch:9200
|
|
- STORAGE_ENDPOINT=minio:9000
|
|
- STORAGE_ACCESS_KEY=minioadmin
|
|
- STORAGE_SECRET_KEY=minioadmin
|
|
- STORAGE_BUCKET=wrong-questions
|
|
- DEBUG=True
|
|
depends_on:
|
|
- postgres
|
|
- elasticsearch
|
|
- minio
|
|
volumes:
|
|
- ./backend:/app
|
|
command: >
|
|
sh -c "alembic upgrade head &&
|
|
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload"
|
|
|
|
postgres:
|
|
image: postgres:16
|
|
environment:
|
|
POSTGRES_DB: wrong_questions
|
|
POSTGRES_USER: user
|
|
POSTGRES_PASSWORD: password
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
ports:
|
|
- "5432:5432"
|
|
|
|
elasticsearch:
|
|
image: elasticsearch:8.11.0
|
|
environment:
|
|
- discovery.type=single-node
|
|
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
|
- xpack.security.enabled=false
|
|
volumes:
|
|
- elasticsearch_data:/usr/share/elasticsearch/data
|
|
ports:
|
|
- "9200:9200"
|
|
|
|
minio:
|
|
image: minio/minio
|
|
command: server /data --console-address ":9001"
|
|
environment:
|
|
MINIO_ROOT_USER: minioadmin
|
|
MINIO_ROOT_PASSWORD: minioadmin
|
|
volumes:
|
|
- minio_data:/data
|
|
ports:
|
|
- "9000:9000"
|
|
- "9001:9001"
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
ports:
|
|
- "6379:6379"
|
|
|
|
volumes:
|
|
postgres_data:
|
|
elasticsearch_data:
|
|
minio_data: |