| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- # Full Docker Compose Deployment Sample Generated by Setup Wizard: `make base` and `make storage`
- # This Sample File requires NVIDIA GPU for Milvus and VLLM services.
- # Copy `env.docker-compose-full` to `.env` before starting this compose file.
- # You can customize your setup using the Setup Wizard; for detailed instructions, please refer to docs/InteractiveSetup.md
- services:
- lightrag:
- image: ghcr.io/hkuds/lightrag:latest
- build:
- context: .
- dockerfile: Dockerfile
- tags:
- - ghcr.io/hkuds/lightrag:latest
- ports:
- - "${HOST:-0.0.0.0}:${PORT:-9621}:9621"
- volumes:
- - ./data/rag_storage:/app/data/rag_storage
- - ./data/inputs:/app/data/inputs
- - ./config.ini:/app/config.ini
- - ./data/prompts:/app/data/prompts
- - ./.env:/app/.env
- deploy:
- restart_policy:
- condition: on-failure
- max_attempts: 10
- extra_hosts:
- - "host.docker.internal:host-gateway"
- environment:
- HOST: "0.0.0.0"
- PORT: "9621"
- EMBEDDING_BINDING_HOST: "http://vllm-embed:8001/v1"
- RERANK_BINDING_HOST: "http://vllm-rerank:8000/rerank"
- POSTGRES_HOST: "postgres"
- POSTGRES_PORT: "5432"
- NEO4J_URI: "neo4j://neo4j:7687"
- WORKING_DIR: "/app/data/rag_storage"
- MILVUS_URI: "http://milvus:19530"
- INPUT_DIR: "/app/data/inputs"
- PROMPT_DIR: "/app/data/prompts"
- MEMGRAPH_URI: "bolt://host.docker.internal:7687"
- REDIS_URI: "redis://host.docker.internal:6379"
- QDRANT_URL: "http://host.docker.internal:6333"
- OPENSEARCH_HOSTS: "host.docker.internal:9200"
- MONGO_URI: "mongodb://root:root@host.docker.internal:27017/"
- depends_on:
- vllm-embed:
- condition: service_healthy
- vllm-rerank:
- condition: service_healthy
- postgres:
- condition: service_healthy
- neo4j:
- condition: service_healthy
- milvus:
- condition: service_healthy
- vllm-embed:
- image: vllm/vllm-openai:latest
- runtime: nvidia
- command: >
- --model ${VLLM_EMBED_MODEL:-BAAI/bge-m3}
- --port ${VLLM_EMBED_PORT:-8001}
- --dtype float16
- --api-key ${VLLM_EMBED_API_KEY}
- ${VLLM_EMBED_EXTRA_ARGS:-}
- environment:
- NVIDIA_VISIBLE_DEVICES: ${NVIDIA_VISIBLE_DEVICES:-all}
- NVIDIA_DRIVER_CAPABILITIES: ${NVIDIA_DRIVER_CAPABILITIES:-compute,utility}
- ports:
- - "${VLLM_EMBED_PORT:-8001}:${VLLM_EMBED_PORT:-8001}"
- volumes:
- - vllm_embed_cache:/root/.cache/huggingface
- ipc: host
- healthcheck:
- test:
- - CMD-SHELL
- - 'PORT_HEX="$(printf ''%04X'' ${VLLM_EMBED_PORT:-8001})"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
- interval: 5s
- timeout: 3s
- retries: 120
- start_period: 10s
- deploy:
- resources:
- reservations:
- devices:
- - driver: nvidia
- count: all
- capabilities: [gpu]
- restart: unless-stopped
- vllm-rerank:
- image: vllm/vllm-openai:latest
- runtime: nvidia
- command: >
- --model ${VLLM_RERANK_MODEL:-BAAI/bge-reranker-v2-m3}
- --port ${VLLM_RERANK_PORT:-8000}
- --dtype float16
- --api-key ${VLLM_RERANK_API_KEY}
- ${VLLM_RERANK_EXTRA_ARGS:-}
- environment:
- NVIDIA_VISIBLE_DEVICES: ${NVIDIA_VISIBLE_DEVICES:-all}
- NVIDIA_DRIVER_CAPABILITIES: ${NVIDIA_DRIVER_CAPABILITIES:-compute,utility}
- ports:
- - "${VLLM_RERANK_PORT:-8000}:${VLLM_RERANK_PORT:-8000}"
- volumes:
- - vllm_rerank_cache:/root/.cache/huggingface
- ipc: host
- healthcheck:
- test:
- - CMD-SHELL
- - 'PORT_HEX="$(printf ''%04X'' ${VLLM_RERANK_PORT:-8000})"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
- interval: 5s
- timeout: 3s
- retries: 120
- start_period: 10s
- deploy:
- resources:
- reservations:
- devices:
- - driver: nvidia
- count: all
- capabilities: [gpu]
- restart: unless-stopped
- postgres:
- # this image does not support PGGraphStorage
- image: pgvector/pgvector:pg18
- # ports:
- # - "5432:5432"
- volumes:
- - postgres_data:/var/lib/postgresql
- healthcheck:
- test:
- - CMD-SHELL
- - 'PORT_HEX="$(printf ''%04X'' 5432)"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
- interval: 5s
- timeout: 3s
- retries: 120
- start_period: 10s
- restart: unless-stopped
- environment:
- POSTGRES_USER: "rag"
- POSTGRES_PASSWORD: "rag"
- POSTGRES_DB: "rag"
- neo4j:
- image: neo4j:5-community
- # ports:
- # - "7474:7474"
- # - "${NEO4J_BOLT_PORT:-7687}:7687"
- volumes:
- - neo4j_data:/data
- healthcheck:
- test:
- - CMD-SHELL
- - 'PORT_HEX="$(printf ''%04X'' 7687)"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
- interval: 10s
- timeout: 3s
- retries: 120
- start_period: 10s
- restart: unless-stopped
- environment:
- NEO4J_AUTH: ${NEO4J_USERNAME:?missing}/${NEO4J_PASSWORD:?missing}
- NEO4J_dbms_default__database: "neo4j"
- milvus:
- image: milvusdb/milvus:v2.6.11-gpu
- command: ["milvus", "run", "standalone"]
- security_opt:
- - seccomp:unconfined
- environment:
- ETCD_ENDPOINTS: milvus-etcd:2379
- MINIO_ADDRESS: milvus-minio:9000
- MINIO_ACCESS_KEY_ID: "${MINIO_ACCESS_KEY_ID:?missing}"
- MINIO_SECRET_ACCESS_KEY: "${MINIO_SECRET_ACCESS_KEY:?missing}"
- # ports:
- # - "19530:19530"
- # - "9091:9091"
- volumes:
- - milvus_data:/var/lib/milvus
- deploy:
- resources:
- reservations:
- devices:
- - driver: nvidia
- capabilities: ["gpu"]
- healthcheck:
- test:
- - CMD-SHELL
- - 'PORT_HEX="$(printf ''%04X'' 19530)"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
- interval: 10s
- timeout: 3s
- retries: 120
- start_period: 10s
- depends_on:
- milvus-etcd:
- condition: service_healthy
- milvus-minio:
- condition: service_healthy
- restart: unless-stopped
- milvus-etcd:
- image: quay.io/coreos/etcd:v3.5.25
- environment:
- ETCD_AUTO_COMPACTION_MODE: revision
- ETCD_AUTO_COMPACTION_RETENTION: "1000"
- ETCD_QUOTA_BACKEND_BYTES: "4294967296"
- ETCD_SNAPSHOT_COUNT: "50000"
- volumes:
- - milvus-etcd_data:/etcd
- command: >
- etcd
- -advertise-client-urls=http://0.0.0.0:2379
- -listen-client-urls=http://0.0.0.0:2379
- -data-dir /etcd
- healthcheck:
- test: ["CMD", "etcdctl", "endpoint", "health"]
- interval: 20s
- timeout: 20s
- retries: 3
- restart: unless-stopped
- milvus-minio:
- image: minio/minio:RELEASE.2025-09-07T16-13-09Z
- environment:
- MINIO_ROOT_USER: "${MINIO_ACCESS_KEY_ID:?missing}"
- MINIO_ROOT_PASSWORD: "${MINIO_SECRET_ACCESS_KEY:?missing}"
- volumes:
- - milvus-minio_data:/minio_data
- command: minio server /minio_data --console-address ":9001"
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
- interval: 30s
- timeout: 20s
- retries: 3
- restart: unless-stopped
- volumes:
- vllm_embed_cache:
- vllm_rerank_cache:
- postgres_data:
- neo4j_data:
- milvus_data:
- milvus-etcd_data:
- milvus-minio_data:
|