248 lines
7.4 KiB
YAML
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:
|