Files
hkuds--lightrag/docker-compose-full.yml
2026-07-13 12:08:54 +08:00

248 lines
7.4 KiB
YAML

# 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:
# The container must listen on 0.0.0.0 to be reachable via the published port.
# SECURITY: set LIGHTRAG_API_KEY (or AUTH_ACCOUNTS with TOKEN_SECRET) in .env
# so the exposed server is authenticated — without it every endpoint is public.
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: