2024-10-08 22:16:17 +08:00
|
|
|
services:
|
|
|
|
|
api:
|
|
|
|
|
build:
|
2025-04-28 22:53:13 +08:00
|
|
|
context: .
|
2024-10-08 22:16:17 +08:00
|
|
|
dockerfile: docker/api.Dockerfile
|
2025-08-08 18:35:01 +08:00
|
|
|
args:
|
|
|
|
|
HTTP_PROXY: ${HTTP_PROXY:-}
|
|
|
|
|
HTTPS_PROXY: ${HTTPS_PROXY:-}
|
2025-06-30 22:29:23 +08:00
|
|
|
image: yuxi-api:0.2.0.dev
|
2024-10-08 22:16:17 +08:00
|
|
|
container_name: api-dev
|
|
|
|
|
working_dir: /app
|
|
|
|
|
volumes:
|
2025-04-28 22:53:13 +08:00
|
|
|
- ./server:/app/server
|
|
|
|
|
- ./src:/app/src
|
2025-04-29 00:04:40 +08:00
|
|
|
- ./saves:/app/saves
|
2025-06-26 02:13:46 +08:00
|
|
|
- ./test:/app/test
|
2025-10-11 20:19:09 +08:00
|
|
|
- ./scripts:/app/scripts
|
2025-10-16 14:52:14 +08:00
|
|
|
- ./.env :/app/.env
|
2025-05-09 16:10:45 +08:00
|
|
|
- ${MODEL_DIR:-./models}:/models # 使用默认值处理未定义的环境变量
|
2024-10-08 22:16:17 +08:00
|
|
|
ports:
|
2025-02-24 11:27:08 +08:00
|
|
|
- "5050:5050"
|
2024-10-08 22:16:17 +08:00
|
|
|
networks:
|
|
|
|
|
- app-network
|
2025-02-28 14:39:03 +08:00
|
|
|
extra_hosts:
|
|
|
|
|
- "host.docker.internal:host-gateway"
|
2025-06-27 01:55:04 +08:00
|
|
|
env_file:
|
2025-10-10 18:07:06 +08:00
|
|
|
- .env
|
2025-10-10 10:49:51 +08:00
|
|
|
# region api_envs
|
2024-10-08 22:16:17 +08:00
|
|
|
environment:
|
2025-09-07 20:25:42 +08:00
|
|
|
- HOST_IP=${HOST_IP:-}
|
2025-06-24 00:16:19 +08:00
|
|
|
- NEO4J_URI=${NEO4J_URI:-bolt://graph:7687}
|
2025-05-09 16:10:45 +08:00
|
|
|
- NEO4J_USERNAME=${NEO4J_USERNAME:-neo4j}
|
|
|
|
|
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-0123456789}
|
2025-06-24 00:16:19 +08:00
|
|
|
- MILVUS_URI=${MILVUS_URI:-http://milvus:19530}
|
2025-07-18 11:29:12 +08:00
|
|
|
- MILVUS_TOKEN=${MILVUS_TOKEN:-}
|
2025-06-24 00:16:19 +08:00
|
|
|
- MINERU_OCR_URI=${MINERU_OCR_URI:-http://mineru:30000}
|
2025-07-27 02:56:50 +08:00
|
|
|
- PADDLEX_URI=${PADDLEX_URI:-http://paddlex:8080}
|
2025-06-24 00:16:19 +08:00
|
|
|
- MINIO_URI=${MINIO_URI:-http://milvus-minio:9000}
|
2025-07-27 04:12:49 +08:00
|
|
|
- MODEL_DIR_IN_DOCKER=/models
|
2025-02-28 14:39:03 +08:00
|
|
|
- RUNNING_IN_DOCKER=true
|
2025-07-27 02:56:50 +08:00
|
|
|
- NO_PROXY=localhost,127.0.0.1,milvus,graph,milvus-minio,milvus-etcd-dev,etcd,minio,mineru,paddlex
|
|
|
|
|
- no_proxy=localhost,127.0.0.1,milvus,graph,milvus-minio,milvus-etcd-dev,etcd,minio,mineru,paddlex
|
2025-10-10 10:49:51 +08:00
|
|
|
# endregion api_envs
|
2025-08-08 18:35:01 +08:00
|
|
|
command: uv run --no-dev uvicorn server.main:app --host 0.0.0.0 --port 5050 --reload
|
2025-05-09 16:10:45 +08:00
|
|
|
restart: unless-stopped
|
2025-06-27 01:55:04 +08:00
|
|
|
healthcheck:
|
2025-07-22 17:29:38 +08:00
|
|
|
test: ["CMD-SHELL", "curl -f http://localhost:5050/api/system/health || exit 1"]
|
2025-07-02 02:17:31 +08:00
|
|
|
interval: 30s
|
|
|
|
|
timeout: 15s
|
|
|
|
|
retries: 8
|
|
|
|
|
start_period: 180s
|
2025-06-20 17:32:49 +08:00
|
|
|
depends_on:
|
2025-07-18 11:29:12 +08:00
|
|
|
# postgres:
|
|
|
|
|
# condition: service_healthy
|
2025-06-20 17:32:49 +08:00
|
|
|
milvus:
|
|
|
|
|
condition: service_healthy
|
2025-06-24 00:16:19 +08:00
|
|
|
minio:
|
|
|
|
|
condition: service_healthy
|
2024-10-08 22:16:17 +08:00
|
|
|
|
|
|
|
|
web:
|
|
|
|
|
build:
|
2025-04-28 22:53:13 +08:00
|
|
|
context: .
|
2024-10-08 22:16:17 +08:00
|
|
|
dockerfile: docker/web.Dockerfile
|
|
|
|
|
target: development
|
2025-06-30 22:29:23 +08:00
|
|
|
image: yuxi-web:0.2.0.dev
|
2024-10-08 22:16:17 +08:00
|
|
|
container_name: web-dev
|
|
|
|
|
volumes:
|
2025-07-28 19:07:58 +08:00
|
|
|
- ./web/src:/app/src
|
|
|
|
|
- ./web/public:/app/public
|
|
|
|
|
- ./web/index.html:/app/index.html
|
|
|
|
|
- ./web/vite.config.js:/app/vite.config.js
|
2024-10-08 22:16:17 +08:00
|
|
|
ports:
|
|
|
|
|
- "5173:5173"
|
|
|
|
|
depends_on:
|
|
|
|
|
- api
|
|
|
|
|
networks:
|
|
|
|
|
- app-network
|
|
|
|
|
environment:
|
|
|
|
|
- NODE_ENV=development
|
2025-05-09 16:10:45 +08:00
|
|
|
- VITE_API_URL=http://api:5050
|
2025-04-28 22:53:13 +08:00
|
|
|
command: pnpm run server
|
2025-05-09 16:10:45 +08:00
|
|
|
restart: unless-stopped
|
2024-10-08 22:16:17 +08:00
|
|
|
|
2025-06-27 01:55:04 +08:00
|
|
|
# PostgreSQL 服务 - 基于官方推荐的 shangor/postgres-for-rag 镜像
|
|
|
|
|
# 提供 KV store, VectorDB (pgvector) 和 GraphDB (Apache AGE) 功能
|
2025-07-18 11:29:12 +08:00
|
|
|
# postgres:
|
|
|
|
|
# image: shangor/postgres-for-rag:v1.0
|
|
|
|
|
# container_name: postgres-lightrag
|
|
|
|
|
# environment:
|
|
|
|
|
# - POSTGRES_DATABASE=${POSTGRES_DATABASE:-lightrag}
|
|
|
|
|
# - POSTGRES_USER=${POSTGRES_USER:-lightrag}
|
|
|
|
|
# - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-lightrag}
|
|
|
|
|
# - POSTGRES_HOST_AUTH_METHOD=md5
|
|
|
|
|
# # 启用必要的扩展
|
|
|
|
|
# - POSTGRES_INITDB_ARGS=--auth-host=md5
|
|
|
|
|
# volumes:
|
|
|
|
|
# - ./docker/volumes/postgres/data:/var/lib/postgresql/data
|
|
|
|
|
# - ./docker/init-postgres.sh:/init-postgres.sh
|
|
|
|
|
# ports:
|
|
|
|
|
# - "5432:5432"
|
|
|
|
|
# healthcheck:
|
|
|
|
|
# test: ["CMD-SHELL", "PGPASSWORD=${POSTGRES_PASSWORD:-lightrag} psql -h localhost -U ${POSTGRES_USER:-lightrag} -d ${POSTGRES_DATABASE:-lightrag} -c \"SELECT ag_catalog.create_graph('test_ready');\" || PGPASSWORD=${POSTGRES_PASSWORD:-lightrag} psql -h localhost -U ${POSTGRES_USER:-lightrag} -d ${POSTGRES_DATABASE:-lightrag} -c 'SELECT 1'"]
|
|
|
|
|
# interval: 30s
|
|
|
|
|
# timeout: 15s
|
|
|
|
|
# retries: 15
|
|
|
|
|
# start_period: 120s
|
|
|
|
|
# networks:
|
|
|
|
|
# - app-network
|
|
|
|
|
# restart: unless-stopped
|
|
|
|
|
# command: ["bash", "/init-postgres.sh"]
|
2025-06-27 01:55:04 +08:00
|
|
|
|
2025-10-10 10:49:51 +08:00
|
|
|
# region neo4j
|
2024-10-08 22:16:17 +08:00
|
|
|
graph:
|
2025-04-28 16:47:26 +08:00
|
|
|
image: neo4j:5.26
|
2025-05-23 15:30:14 +08:00
|
|
|
container_name: graph
|
2024-10-08 22:16:17 +08:00
|
|
|
ports:
|
|
|
|
|
- "7474:7474"
|
|
|
|
|
- "7687:7687"
|
|
|
|
|
volumes:
|
2025-04-28 23:48:01 +08:00
|
|
|
- ./docker/volumes/neo4j/data:/data
|
|
|
|
|
- ./docker/volumes/neo4j/logs:/var/lib/neo4j/logs
|
2025-06-20 17:32:49 +08:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "curl -f http://localhost:7474 || exit 1"]
|
|
|
|
|
interval: 20s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 5
|
|
|
|
|
start_period: 30s
|
2024-10-08 22:16:17 +08:00
|
|
|
environment:
|
2025-05-09 16:10:45 +08:00
|
|
|
- NEO4J_AUTH=${NEO4J_USERNAME:-neo4j}/${NEO4J_PASSWORD:-0123456789}
|
2024-10-08 22:16:17 +08:00
|
|
|
- NEO4J_server_bolt_listen__address=0.0.0.0:7687
|
|
|
|
|
- NEO4J_server_http_listen__address=0.0.0.0:7474
|
2025-04-04 18:34:49 +08:00
|
|
|
- ENTITY_EMBEDDING=true
|
2024-10-08 22:16:17 +08:00
|
|
|
networks:
|
|
|
|
|
- app-network
|
2025-05-09 16:10:45 +08:00
|
|
|
restart: unless-stopped
|
2025-10-10 10:49:51 +08:00
|
|
|
# endregion neo4j
|
2024-10-08 22:16:17 +08:00
|
|
|
|
|
|
|
|
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:
|
2025-04-28 23:48:01 +08:00
|
|
|
- ./docker/volumes/milvus/etcd:/etcd
|
2024-10-08 22:16:17 +08:00
|
|
|
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"]
|
2025-05-09 16:10:45 +08:00
|
|
|
interval: 60s
|
|
|
|
|
timeout: 30s
|
|
|
|
|
retries: 5
|
|
|
|
|
start_period: 30s
|
2024-10-08 22:16:17 +08:00
|
|
|
networks:
|
|
|
|
|
- app-network
|
2025-05-09 16:10:45 +08:00
|
|
|
restart: unless-stopped
|
2024-10-08 22:16:17 +08:00
|
|
|
|
|
|
|
|
minio:
|
2025-05-23 15:30:14 +08:00
|
|
|
container_name: milvus-minio
|
2024-10-08 22:16:17 +08:00
|
|
|
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
|
|
|
|
|
environment:
|
2025-05-09 16:10:45 +08:00
|
|
|
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}
|
|
|
|
|
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin}
|
2024-10-08 22:16:17 +08:00
|
|
|
volumes:
|
2025-04-28 23:48:01 +08:00
|
|
|
- ./docker/volumes/milvus/minio:/minio_data
|
2025-06-24 00:16:19 +08:00
|
|
|
- ./docker/volumes/milvus/minio_config:/root/.minio
|
|
|
|
|
command: minio server /minio_data --address 0.0.0.0:9000 --console-address 0.0.0.0:9001
|
2024-10-08 22:16:17 +08:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
2025-05-09 16:10:45 +08:00
|
|
|
interval: 60s
|
|
|
|
|
timeout: 30s
|
|
|
|
|
retries: 5
|
|
|
|
|
start_period: 30s
|
2025-06-24 00:16:19 +08:00
|
|
|
ports:
|
|
|
|
|
- "9000:9000"
|
|
|
|
|
- "9001:9001"
|
2024-10-08 22:16:17 +08:00
|
|
|
networks:
|
|
|
|
|
- app-network
|
2025-05-09 16:10:45 +08:00
|
|
|
restart: unless-stopped
|
2024-10-08 22:16:17 +08:00
|
|
|
|
|
|
|
|
milvus:
|
2025-04-28 16:40:03 +08:00
|
|
|
image: milvusdb/milvus:v2.5.6
|
2025-05-23 15:30:14 +08:00
|
|
|
container_name: milvus
|
2024-10-08 22:16:17 +08:00
|
|
|
command: ["milvus", "run", "standalone"]
|
|
|
|
|
security_opt:
|
|
|
|
|
- seccomp:unconfined
|
|
|
|
|
environment:
|
|
|
|
|
ETCD_ENDPOINTS: etcd:2379
|
|
|
|
|
MINIO_ADDRESS: minio:9000
|
2025-05-09 16:10:45 +08:00
|
|
|
MILVUS_LOG_LEVEL: error
|
2024-10-08 22:16:17 +08:00
|
|
|
volumes:
|
2025-04-28 23:48:01 +08:00
|
|
|
- ./docker/volumes/milvus/milvus:/var/lib/milvus
|
|
|
|
|
- ./docker/volumes/milvus/logs:/var/lib/milvus/logs
|
2024-10-08 22:16:17 +08:00
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
|
2025-05-09 16:10:45 +08:00
|
|
|
interval: 60s
|
|
|
|
|
start_period: 120s
|
|
|
|
|
timeout: 30s
|
|
|
|
|
retries: 5
|
2024-10-08 22:16:17 +08:00
|
|
|
ports:
|
|
|
|
|
- "19530:19530"
|
|
|
|
|
- "9091:9091"
|
|
|
|
|
depends_on:
|
|
|
|
|
- "etcd"
|
|
|
|
|
- "minio"
|
|
|
|
|
networks:
|
|
|
|
|
- app-network
|
2025-05-09 16:10:45 +08:00
|
|
|
restart: unless-stopped
|
2025-06-18 19:07:29 +08:00
|
|
|
# lastest version: wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/compose.yaml
|
2025-06-20 17:32:49 +08:00
|
|
|
mineru:
|
2025-05-23 15:30:14 +08:00
|
|
|
build:
|
2025-06-20 17:32:49 +08:00
|
|
|
context: .
|
|
|
|
|
dockerfile: docker/mineru.Dockerfile
|
2025-06-18 19:07:29 +08:00
|
|
|
image: mineru-sglang:latest
|
2025-06-20 17:32:49 +08:00
|
|
|
container_name: mineru
|
|
|
|
|
profiles:
|
|
|
|
|
- all
|
2025-06-18 19:07:29 +08:00
|
|
|
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"]
|
2025-05-23 15:30:14 +08:00
|
|
|
deploy:
|
|
|
|
|
resources:
|
|
|
|
|
reservations:
|
|
|
|
|
devices:
|
|
|
|
|
- driver: nvidia
|
2025-07-27 02:56:50 +08:00
|
|
|
device_ids: ["0"]
|
2025-06-20 17:33:14 +08:00
|
|
|
capabilities: [gpu]
|
|
|
|
|
networks:
|
|
|
|
|
- app-network
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
paddlex:
|
|
|
|
|
build:
|
|
|
|
|
context: .
|
|
|
|
|
dockerfile: docker/paddlex.Dockerfile
|
|
|
|
|
image: paddlex:latest
|
2025-06-25 14:16:34 +08:00
|
|
|
container_name: paddlex-ocr
|
2025-06-20 17:33:14 +08:00
|
|
|
profiles:
|
|
|
|
|
- all
|
|
|
|
|
volumes:
|
|
|
|
|
- ./docker/volumes/paddlex:/paddlex
|
|
|
|
|
ports:
|
|
|
|
|
- "8080:8080"
|
|
|
|
|
healthcheck:
|
2025-08-28 23:08:04 +08:00
|
|
|
test: ["CMD-SHELL", "curl -f http://localhost:8080/health || exit 1"]
|
2025-06-20 17:33:14 +08:00
|
|
|
interval: 20s
|
|
|
|
|
timeout: 10s
|
|
|
|
|
retries: 5
|
|
|
|
|
start_period: 60s
|
|
|
|
|
deploy:
|
|
|
|
|
resources:
|
|
|
|
|
reservations:
|
|
|
|
|
devices:
|
|
|
|
|
- driver: nvidia
|
|
|
|
|
device_ids: ['0']
|
2025-05-23 15:30:14 +08:00
|
|
|
capabilities: [gpu]
|
|
|
|
|
networks:
|
|
|
|
|
- app-network
|
|
|
|
|
restart: unless-stopped
|
2025-06-17 10:54:45 +08:00
|
|
|
|
2024-10-08 22:16:17 +08:00
|
|
|
networks:
|
|
|
|
|
app-network:
|
2024-10-23 16:24:09 +08:00
|
|
|
driver: bridge
|