ForcePilot/docker-compose.yml
Wenjie Zhang c6ab72cd5b refactor: 项目配置重构及 OCR 功能增强
- 更新 .gitignore,忽略本地文件。
- 调整 docker-compose.yml,优化服务配置及端口设置。
- api.Dockerfile 更换为基于 NVIDIA CUDA 的镜像,支持 GPU。
- pyproject.toml 新增依赖 langchain-tavily,并升级 mineru。
- tools_factory.py 重构,采用 langchain_tavily 的 TavilySearch。
- knowledgebase.py 增强 Milvus 连接异常的错误日志。
- _ocr.py 中 OCRPlugin 升级,使用 mineru 新解析方法,并调整健康检查 URL。
- 新增 mineru.py,实现文档解析逻辑。
- logging_config.py 优化日志配置,采用 loguru 管理日志。
- DataBaseInfoView.vue 新增分块参数配置及文件上传相关弹窗和功能。
2025-06-18 19:07:29 +08:00

184 lines
4.8 KiB
YAML

services:
api:
build:
context: .
dockerfile: docker/api.Dockerfile
# args:
# http_proxy: http://172.19.13.5:7890
# https_proxy: http://172.19.13.5:7890
image: yuxi-api:0.1.0
container_name: api-dev
working_dir: /app
volumes:
- ./server:/app/server
- ./src:/app/src
- ./saves:/app/saves
- ${MODEL_DIR:-./models}:/models # 使用默认值处理未定义的环境变量
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['0'] # 使用GPU 1
capabilities: [gpu]
ports:
- "5050:5050"
networks:
- app-network
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- NEO4J_URI=bolt://graph:7687
- NEO4J_USERNAME=${NEO4J_USERNAME:-neo4j}
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-0123456789}
- MILVUS_URI=http://127.0.0.1:19530
- MINERU_OCR_URI=http://127.0.0.1:30000
- MODEL_DIR=/models
- RUNNING_IN_DOCKER=true
command: uv run uvicorn server.main:app --host 0.0.0.0 --port 5050 --reload
restart: unless-stopped
web:
build:
context: .
dockerfile: docker/web.Dockerfile
target: development
image: yuxi-web:0.1.0
container_name: web-dev
volumes:
- ./web:/app
- /app/node_modules
ports:
- "5173:5173"
depends_on:
- api
networks:
- app-network
environment:
- NODE_ENV=development
- VITE_API_URL=http://api:5050
command: pnpm run server
restart: unless-stopped
graph:
image: neo4j:5.26
container_name: graph
ports:
- "7474:7474"
- "7687:7687"
volumes:
- ./docker/volumes/neo4j/data:/data
- ./docker/volumes/neo4j/logs:/var/lib/neo4j/logs
environment:
- NEO4J_AUTH=${NEO4J_USERNAME:-neo4j}/${NEO4J_PASSWORD:-0123456789}
- NEO4J_server_bolt_listen__address=0.0.0.0:7687
- NEO4J_server_http_listen__address=0.0.0.0:7474
- ENTITY_EMBEDDING=true
networks:
- app-network
restart: unless-stopped
etcd:
container_name: milvus-etcd-dev
image: quay.io/coreos/etcd:v3.5.5
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- ./docker/volumes/milvus/etcd:/etcd
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 60s
timeout: 30s
retries: 5
start_period: 30s
networks:
- app-network
restart: unless-stopped
minio:
container_name: milvus-minio
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
environment:
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin}
volumes:
- ./docker/volumes/milvus/minio:/minio_data
command: minio server /minio_data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 60s
timeout: 30s
retries: 5
start_period: 30s
networks:
- app-network
restart: unless-stopped
milvus:
image: milvusdb/milvus:v2.5.6
container_name: milvus
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
MILVUS_LOG_LEVEL: error
volumes:
- ./docker/volumes/milvus/milvus:/var/lib/milvus
- ./docker/volumes/milvus/logs:/var/lib/milvus/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
interval: 60s
start_period: 120s
timeout: 30s
retries: 5
ports:
- "19530:19530"
- "9091:9091"
depends_on:
- "etcd"
- "minio"
networks:
- app-network
restart: unless-stopped
# lastest version: wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/compose.yaml
mineru-sglang:
build:
context: scripts/mineru-sglang
dockerfile: Dockerfile
image: mineru-sglang:latest
container_name: mineru-sglang
ports:
- 30000:30000
environment:
MINERU_MODEL_SOURCE: modelscope
entrypoint: mineru-sglang-server
command:
--host 0.0.0.0
--port 30000
ulimits:
memlock: -1
stack: 67108864
ipc: host
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:30000/health || exit 1"]
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ["0"]
capabilities: [gpu]
networks:
- app-network
restart: unless-stopped
networks:
app-network:
driver: bridge