From 1cc56f1cb53cf009e2d9cdb0903ef50251d3ced7 Mon Sep 17 00:00:00 2001 From: Yuguo Qin Date: Mon, 17 Feb 2025 03:03:14 +0800 Subject: [PATCH] Current docker setup. --- .env.example | 88 ++++++++++++++++++---------------- docker-compose.yml | 29 ++++++++++- lightragDBs/docker-compose.yml | 44 +++++++++++++++++ 3 files changed, 118 insertions(+), 43 deletions(-) create mode 100644 lightragDBs/docker-compose.yml diff --git a/.env.example b/.env.example index 2701335a..e60b2bf3 100644 --- a/.env.example +++ b/.env.example @@ -1,20 +1,19 @@ ### Server Configuration -# HOST=0.0.0.0 -# PORT=9621 -# NAMESPACE_PREFIX=lightrag # separating data from difference Lightrag instances -# CORS_ORIGINS=http://localhost:3000,http://localhost:8080 +HOST=0.0.0.0 +PORT=9621 +NAMESPACE_PREFIX=lightrag_1 # separating data from difference Lightrag instances ### Optional SSL Configuration -# SSL=true -# SSL_CERTFILE=/path/to/cert.pem -# SSL_KEYFILE=/path/to/key.pem +#SSL=true +#SSL_CERTFILE=/path/to/cert.pem +#SSL_KEYFILE=/path/to/key.pem ### Security (empty for no api-key is needed) # LIGHTRAG_API_KEY=your-secure-api-key-here ### Directory Configuration -# WORKING_DIR= -# INPUT_DIR= +# WORKING_DIR=./rag_storage +# INPUT_DIR=./inputs ### Logging level LOG_LEVEL=INFO @@ -38,15 +37,15 @@ MAX_EMBED_TOKENS=8192 ### LLM Configuration (Use valid host. For local services, you can use host.docker.internal) ### Ollama example -LLM_BINDING=ollama -LLM_BINDING_HOST=http://host.docker.internal:11434 -LLM_MODEL=mistral-nemo:latest +# LLM_BINDING=ollama +# LLM_BINDING_HOST=http://host.docker.internal:11434 +# LLM_MODEL=mistral-nemo:latest ### OpenAI alike example -# LLM_BINDING=openai -# LLM_MODEL=deepseek-chat -# LLM_BINDING_HOST=https://api.deepseek.com -# LLM_BINDING_API_KEY=your_api_key +LLM_BINDING=openai +LLM_MODEL=deepseek-chat +LLM_BINDING_HOST=https://api.deepseek.com +LLM_BINDING_API_KEY=your_api_key ### for OpenAI LLM (LLM_BINDING_API_KEY take priority) # OPENAI_API_KEY=your_api_key @@ -61,6 +60,7 @@ LLM_MODEL=mistral-nemo:latest # Ollama example EMBEDDING_BINDING=ollama EMBEDDING_BINDING_HOST=http://host.docker.internal:11434 +EMBEDDING_BINDING_API_KEY= EMBEDDING_MODEL=bge-m3:latest ### Lollms example @@ -78,56 +78,60 @@ EMBEDDING_MODEL=bge-m3:latest # AZURE_EMBEDDING_API_VERSION=2023-05-15 ### Data storage selection -# LIGHTRAG_KV_STORAGE=PGKVStorage -# LIGHTRAG_VECTOR_STORAGE=PGVectorStorage -# LIGHTRAG_GRAPH_STORAGE=PGGraphStorage -# LIGHTRAG_DOC_STATUS_STORAGE=PGDocStatusStorage +LIGHTRAG_KV_STORAGE=RedisKVStorage +LIGHTRAG_VECTOR_STORAGE=QdrantVectorDBStorage +LIGHTRAG_GRAPH_STORAGE=Neo4JStorage +LIGHTRAG_DOC_STATUS_STORAGE=MongoDocStatusStorage ### Oracle Database Configuration -ORACLE_DSN=localhost:1521/XEPDB1 -ORACLE_USER=your_username -ORACLE_PASSWORD='your_password' -ORACLE_CONFIG_DIR=/path/to/oracle/config +#ORACLE_DSN=localhost:1521/XEPDB1 +#ORACLE_USER=your_username +#ORACLE_PASSWORD='your_password' +#ORACLE_CONFIG_DIR=/path/to/oracle/config #ORACLE_WALLET_LOCATION=/path/to/wallet # optional #ORACLE_WALLET_PASSWORD='your_password' # optional #ORACLE_WORKSPACE=default # separating all data from difference Lightrag instances(deprecated, use NAMESPACE_PREFIX in future) ### TiDB Configuration -TIDB_HOST=localhost -TIDB_PORT=4000 -TIDB_USER=your_username -TIDB_PASSWORD='your_password' -TIDB_DATABASE=your_database +#TIDB_HOST=localhost +#TIDB_PORT=4000 +#TIDB_USER=your_username +#TIDB_PASSWORD='your_password' +#TIDB_DATABASE=your_database #TIDB_WORKSPACE=default # separating all data from difference Lightrag instances(deprecated, use NAMESPACE_PREFIX in future) ### PostgreSQL Configuration -POSTGRES_HOST=localhost -POSTGRES_PORT=5432 -POSTGRES_USER=your_username -POSTGRES_PASSWORD='your_password' -POSTGRES_DATABASE=your_database +# POSTGRES_HOST=postgres +# POSTGRES_PORT=5432 +# POSTGRES_USER=postgres +# POSTGRES_PASSWORD='your_password' +# POSTGRES_DATABASE=lightrag #POSTGRES_WORKSPACE=default # separating all data from difference Lightrag instances(deprecated, use NAMESPACE_PREFIX in future) ### Independent AGM Configuration(not for AMG embedded in PostreSQL) -AGE_POSTGRES_DB= -AGE_POSTGRES_USER= -AGE_POSTGRES_PASSWORD= -AGE_POSTGRES_HOST= +#AGE_POSTGRES_DB= +#AGE_POSTGRES_USER= +#AGE_POSTGRES_PASSWORD= +#AGE_POSTGRES_HOST= # AGE_POSTGRES_PORT=8529 # AGE Graph Name(apply to PostgreSQL and independent AGM) # AGE_GRAPH_NAME=lightrag # deprecated, use NAME_SPACE_PREFIX instead ### Neo4j Configuration -NEO4J_URI=neo4j+s://xxxxxxxx.databases.neo4j.io +NEO4J_URI=neo4j+s://neo4j NEO4J_USERNAME=neo4j NEO4J_PASSWORD='your_password' +NEO4J_DATABASE=neo4j # IMPORTANT: free version of neo4j does not support multiple databases, therefore we force it to neo4j ### MongoDB Configuration -MONGODB_URI=mongodb://root:root@localhost:27017/ -MONGODB_DATABASE=LightRAG +MONGO_URI=mongodb://mongodb:root@mongodb:27017/ +MONGO_DATABASE=lightrag MONGODB_GRAPH=false # deprecated (keep for backward compatibility) ### Qdrant -QDRANT_URL=http://localhost:16333 +QDRANT_URL=http://qdrant:16333 QDRANT_API_KEY=your-api-key # 可选 + +### Redis +REDIS_URI=redis://redis:6379 diff --git a/docker-compose.yml b/docker-compose.yml index b5659692..41ecdfba 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,30 @@ version: '3.8' +name: ${NAMESPACE_PREFIX} services: + neo4j: + image: neo4j + environment: + NEO4J_AUTH: ${NEO4J_USERNAME}/${NEO4J_PASSWORD} + NEO4J_apoc_export_file_enabled: true + NEO4J_apoc_import_file_enabled: true + NEO4J_apoc_import_file_use__neo4j__config: true + NEO4J_PLUGINS: '["apoc"]' + volumes: + - ./data/neo4j/data:/data + - ./data/neo4j/plugins:/plugins + - ./data/neo4j/logs:/logs + ports: + - "127.0.0.1:7474:7474" # HTTP + - "127.0.0.1:7687:7687" # Bolt + networks: + - lightrag_net + restart: always + lightrag: build: . ports: - - "${PORT:-9621}:9621" + - "127.0.0.1:9621:9621" volumes: - ./data/rag_storage:/app/data/rag_storage - ./data/inputs:/app/data/inputs @@ -16,8 +36,15 @@ services: restart: unless-stopped networks: - lightrag_net + - lightrag_db_network extra_hosts: - "host.docker.internal:host-gateway" + depends_on: + - neo4j + networks: lightrag_net: driver: bridge + lightrag_db_network: + name: lightrag_db_network + external: true diff --git a/lightragDBs/docker-compose.yml b/lightragDBs/docker-compose.yml new file mode 100644 index 00000000..cc2695fc --- /dev/null +++ b/lightragDBs/docker-compose.yml @@ -0,0 +1,44 @@ +version: '3.8' +name: lightrag_db + +services: + mongodb: + image: mongo + environment: + MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} + MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} + volumes: + - ./volumes/mongodb:/data/db + # ports: + # - "27017:27017" + networks: + - lightrag_db_network + restart: always + + qdrant: + image: qdrant/qdrant + volumes: + - ./volumes/qdrant:/qdrant/storage + - ./volumes/qdrant/snapshots:/qdrant/snapshots + environment: + QDRANT__SERVICE__API_KEY: ${VECTOR_STORE_DB_API_KEY} + # ports: + # - "6333:6333" # REST API + # - "6334:6334" # GRPC + networks: + - lightrag_db_network + restart: always + + redis: + image: redis:alpine + volumes: + - ./volumes/redis:/data + # ports: + # - "127.0.0.1:6379:6379" + networks: + - lightrag_db_network + restart: always + +networks: + lightrag_db_network: + name: lightrag_db_network