docker-compose-full.yml 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. # Full Docker Compose Deployment Sample Generated by Setup Wizard: `make base` and `make storage`
  2. # This Sample File requires NVIDIA GPU for Milvus and VLLM services.
  3. # Copy `env.docker-compose-full` to `.env` before starting this compose file.
  4. # You can customize your setup using the Setup Wizard; for detailed instructions, please refer to docs/InteractiveSetup.md
  5. services:
  6. lightrag:
  7. image: ghcr.io/hkuds/lightrag:latest
  8. build:
  9. context: .
  10. dockerfile: Dockerfile
  11. tags:
  12. - ghcr.io/hkuds/lightrag:latest
  13. ports:
  14. - "${HOST:-0.0.0.0}:${PORT:-9621}:9621"
  15. volumes:
  16. - ./data/rag_storage:/app/data/rag_storage
  17. - ./data/inputs:/app/data/inputs
  18. - ./config.ini:/app/config.ini
  19. - ./data/prompts:/app/data/prompts
  20. - ./.env:/app/.env
  21. deploy:
  22. restart_policy:
  23. condition: on-failure
  24. max_attempts: 10
  25. extra_hosts:
  26. - "host.docker.internal:host-gateway"
  27. environment:
  28. HOST: "0.0.0.0"
  29. PORT: "9621"
  30. EMBEDDING_BINDING_HOST: "http://vllm-embed:8001/v1"
  31. RERANK_BINDING_HOST: "http://vllm-rerank:8000/rerank"
  32. POSTGRES_HOST: "postgres"
  33. POSTGRES_PORT: "5432"
  34. NEO4J_URI: "neo4j://neo4j:7687"
  35. WORKING_DIR: "/app/data/rag_storage"
  36. MILVUS_URI: "http://milvus:19530"
  37. INPUT_DIR: "/app/data/inputs"
  38. PROMPT_DIR: "/app/data/prompts"
  39. MEMGRAPH_URI: "bolt://host.docker.internal:7687"
  40. REDIS_URI: "redis://host.docker.internal:6379"
  41. QDRANT_URL: "http://host.docker.internal:6333"
  42. OPENSEARCH_HOSTS: "host.docker.internal:9200"
  43. MONGO_URI: "mongodb://root:root@host.docker.internal:27017/"
  44. depends_on:
  45. vllm-embed:
  46. condition: service_healthy
  47. vllm-rerank:
  48. condition: service_healthy
  49. postgres:
  50. condition: service_healthy
  51. neo4j:
  52. condition: service_healthy
  53. milvus:
  54. condition: service_healthy
  55. vllm-embed:
  56. image: vllm/vllm-openai:latest
  57. runtime: nvidia
  58. command: >
  59. --model ${VLLM_EMBED_MODEL:-BAAI/bge-m3}
  60. --port ${VLLM_EMBED_PORT:-8001}
  61. --dtype float16
  62. --api-key ${VLLM_EMBED_API_KEY}
  63. ${VLLM_EMBED_EXTRA_ARGS:-}
  64. environment:
  65. NVIDIA_VISIBLE_DEVICES: ${NVIDIA_VISIBLE_DEVICES:-all}
  66. NVIDIA_DRIVER_CAPABILITIES: ${NVIDIA_DRIVER_CAPABILITIES:-compute,utility}
  67. ports:
  68. - "${VLLM_EMBED_PORT:-8001}:${VLLM_EMBED_PORT:-8001}"
  69. volumes:
  70. - vllm_embed_cache:/root/.cache/huggingface
  71. ipc: host
  72. healthcheck:
  73. test:
  74. - CMD-SHELL
  75. - 'PORT_HEX="$(printf ''%04X'' ${VLLM_EMBED_PORT:-8001})"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
  76. interval: 5s
  77. timeout: 3s
  78. retries: 120
  79. start_period: 10s
  80. deploy:
  81. resources:
  82. reservations:
  83. devices:
  84. - driver: nvidia
  85. count: all
  86. capabilities: [gpu]
  87. restart: unless-stopped
  88. vllm-rerank:
  89. image: vllm/vllm-openai:latest
  90. runtime: nvidia
  91. command: >
  92. --model ${VLLM_RERANK_MODEL:-BAAI/bge-reranker-v2-m3}
  93. --port ${VLLM_RERANK_PORT:-8000}
  94. --dtype float16
  95. --api-key ${VLLM_RERANK_API_KEY}
  96. ${VLLM_RERANK_EXTRA_ARGS:-}
  97. environment:
  98. NVIDIA_VISIBLE_DEVICES: ${NVIDIA_VISIBLE_DEVICES:-all}
  99. NVIDIA_DRIVER_CAPABILITIES: ${NVIDIA_DRIVER_CAPABILITIES:-compute,utility}
  100. ports:
  101. - "${VLLM_RERANK_PORT:-8000}:${VLLM_RERANK_PORT:-8000}"
  102. volumes:
  103. - vllm_rerank_cache:/root/.cache/huggingface
  104. ipc: host
  105. healthcheck:
  106. test:
  107. - CMD-SHELL
  108. - 'PORT_HEX="$(printf ''%04X'' ${VLLM_RERANK_PORT:-8000})"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
  109. interval: 5s
  110. timeout: 3s
  111. retries: 120
  112. start_period: 10s
  113. deploy:
  114. resources:
  115. reservations:
  116. devices:
  117. - driver: nvidia
  118. count: all
  119. capabilities: [gpu]
  120. restart: unless-stopped
  121. postgres:
  122. # this image does not support PGGraphStorage
  123. image: pgvector/pgvector:pg18
  124. # ports:
  125. # - "5432:5432"
  126. volumes:
  127. - postgres_data:/var/lib/postgresql
  128. healthcheck:
  129. test:
  130. - CMD-SHELL
  131. - 'PORT_HEX="$(printf ''%04X'' 5432)"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
  132. interval: 5s
  133. timeout: 3s
  134. retries: 120
  135. start_period: 10s
  136. restart: unless-stopped
  137. environment:
  138. POSTGRES_USER: "rag"
  139. POSTGRES_PASSWORD: "rag"
  140. POSTGRES_DB: "rag"
  141. neo4j:
  142. image: neo4j:5-community
  143. # ports:
  144. # - "7474:7474"
  145. # - "${NEO4J_BOLT_PORT:-7687}:7687"
  146. volumes:
  147. - neo4j_data:/data
  148. healthcheck:
  149. test:
  150. - CMD-SHELL
  151. - 'PORT_HEX="$(printf ''%04X'' 7687)"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
  152. interval: 10s
  153. timeout: 3s
  154. retries: 120
  155. start_period: 10s
  156. restart: unless-stopped
  157. environment:
  158. NEO4J_AUTH: ${NEO4J_USERNAME:?missing}/${NEO4J_PASSWORD:?missing}
  159. NEO4J_dbms_default__database: "neo4j"
  160. milvus:
  161. image: milvusdb/milvus:v2.6.11-gpu
  162. command: ["milvus", "run", "standalone"]
  163. security_opt:
  164. - seccomp:unconfined
  165. environment:
  166. ETCD_ENDPOINTS: milvus-etcd:2379
  167. MINIO_ADDRESS: milvus-minio:9000
  168. MINIO_ACCESS_KEY_ID: "${MINIO_ACCESS_KEY_ID:?missing}"
  169. MINIO_SECRET_ACCESS_KEY: "${MINIO_SECRET_ACCESS_KEY:?missing}"
  170. # ports:
  171. # - "19530:19530"
  172. # - "9091:9091"
  173. volumes:
  174. - milvus_data:/var/lib/milvus
  175. deploy:
  176. resources:
  177. reservations:
  178. devices:
  179. - driver: nvidia
  180. capabilities: ["gpu"]
  181. healthcheck:
  182. test:
  183. - CMD-SHELL
  184. - 'PORT_HEX="$(printf ''%04X'' 19530)"; cat /proc/net/tcp /proc/net/tcp6 2>/dev/null | grep -q ":$${PORT_HEX} "'
  185. interval: 10s
  186. timeout: 3s
  187. retries: 120
  188. start_period: 10s
  189. depends_on:
  190. milvus-etcd:
  191. condition: service_healthy
  192. milvus-minio:
  193. condition: service_healthy
  194. restart: unless-stopped
  195. milvus-etcd:
  196. image: quay.io/coreos/etcd:v3.5.25
  197. environment:
  198. ETCD_AUTO_COMPACTION_MODE: revision
  199. ETCD_AUTO_COMPACTION_RETENTION: "1000"
  200. ETCD_QUOTA_BACKEND_BYTES: "4294967296"
  201. ETCD_SNAPSHOT_COUNT: "50000"
  202. volumes:
  203. - milvus-etcd_data:/etcd
  204. command: >
  205. etcd
  206. -advertise-client-urls=http://0.0.0.0:2379
  207. -listen-client-urls=http://0.0.0.0:2379
  208. -data-dir /etcd
  209. healthcheck:
  210. test: ["CMD", "etcdctl", "endpoint", "health"]
  211. interval: 20s
  212. timeout: 20s
  213. retries: 3
  214. restart: unless-stopped
  215. milvus-minio:
  216. image: minio/minio:RELEASE.2025-09-07T16-13-09Z
  217. environment:
  218. MINIO_ROOT_USER: "${MINIO_ACCESS_KEY_ID:?missing}"
  219. MINIO_ROOT_PASSWORD: "${MINIO_SECRET_ACCESS_KEY:?missing}"
  220. volumes:
  221. - milvus-minio_data:/minio_data
  222. command: minio server /minio_data --console-address ":9001"
  223. healthcheck:
  224. test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
  225. interval: 30s
  226. timeout: 20s
  227. retries: 3
  228. restart: unless-stopped
  229. volumes:
  230. vllm_embed_cache:
  231. vllm_rerank_cache:
  232. postgres_data:
  233. neo4j_data:
  234. milvus_data:
  235. milvus-etcd_data:
  236. milvus-minio_data: