From fda937175de41ae7f3bb1bfba11b522774c90ff6 Mon Sep 17 00:00:00 2001 From: takatost Date: Sun, 8 Oct 2023 12:04:04 -0500 Subject: [PATCH] feat: qdrant support in docker compose (#1286) --- .gitignore | 1 + api/.env.example | 6 ++-- docker/docker-compose.middleware.yaml | 16 ++++++++++- docker/docker-compose.yaml | 41 +++++++++++++++++++++++---- 4 files changed, 55 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 5a43c946f..5512b4944 100644 --- a/.gitignore +++ b/.gitignore @@ -144,6 +144,7 @@ docker/volumes/app/storage/* docker/volumes/db/data/* docker/volumes/redis/data/* docker/volumes/weaviate/* +docker/volumes/qdrant/* sdks/python-client/build sdks/python-client/dist diff --git a/api/.env.example b/api/.env.example index fbb5dbcdd..374901024 100644 --- a/api/.env.example +++ b/api/.env.example @@ -59,9 +59,9 @@ WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih WEAVIATE_GRPC_ENABLED=false WEAVIATE_BATCH_SIZE=100 -# Qdrant configuration, use `path:` prefix for local mode or `https://your-qdrant-cluster-url.qdrant.io` for remote mode -QDRANT_URL=path:storage/qdrant -QDRANT_API_KEY=your-qdrant-api-key +# Qdrant configuration, use `http://localhost:6333` for local mode or `https://your-qdrant-cluster-url.qdrant.io` for remote mode +QDRANT_URL=http://localhost:6333 +QDRANT_API_KEY=difyai123456 # Mail configuration, support: resend MAIL_TYPE= diff --git a/docker/docker-compose.middleware.yaml b/docker/docker-compose.middleware.yaml index 7e029d663..559f5f6b5 100644 --- a/docker/docker-compose.middleware.yaml +++ b/docker/docker-compose.middleware.yaml @@ -49,4 +49,18 @@ services: AUTHORIZATION_ADMINLIST_ENABLED: 'true' AUTHORIZATION_ADMINLIST_USERS: 'hello@dify.ai' ports: - - "8080:8080" \ No newline at end of file + - "8080:8080" + + # Qdrant vector store. +# uncomment to use qdrant as vector store. +# (if uncommented, you need to comment out the weaviate service above, +# and set VECTOR_STORE to qdrant in the api & worker service.) +# qdrant: +# image: qdrant/qdrant:latest +# restart: always +# volumes: +# - ./volumes/qdrant:/qdrant/storage +# environment: +# QDRANT__API_KEY: 'difyai123456' +# ports: +# - "6333:6333" \ No newline at end of file diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index ef6843c73..14714aebe 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -85,9 +85,9 @@ services: # The Weaviate API key. WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih # The Qdrant endpoint URL. Only available when VECTOR_STORE is `qdrant`. - QDRANT_URL: 'https://your-qdrant-cluster-url.qdrant.tech/' + QDRANT_URL: http://qdrant:6333 # The Qdrant API key. - QDRANT_API_KEY: 'ak-difyai' + QDRANT_API_KEY: difyai123456 # Mail configuration, support: resend MAIL_TYPE: '' # default send from email address, if not specified @@ -103,10 +103,12 @@ services: depends_on: - db - redis - - weaviate volumes: # Mount the storage directory to the container, for storing user files. - ./volumes/app/storage:/app/api/storage +# uncomment to expose dify-api port to host +# ports: +# - "5001:5001" # worker service # The Celery worker for processing the queue. @@ -143,10 +145,16 @@ services: # The type of storage to use for storing user files. Supported values are `local` and `s3`, Default: `local` STORAGE_TYPE: local STORAGE_LOCAL_PATH: storage - # The Vector store configurations. + # The type of vector store to use. Supported values are `weaviate`, `qdrant`. VECTOR_STORE: weaviate + # The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`. WEAVIATE_ENDPOINT: http://weaviate:8080 + # The Weaviate API key. WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih + # The Qdrant endpoint URL. Only available when VECTOR_STORE is `qdrant`. + QDRANT_URL: http://qdrant:6333 + # The Qdrant API key. + QDRANT_API_KEY: difyai123456 # Mail configuration, support: resend MAIL_TYPE: '' # default send from email address, if not specified @@ -156,7 +164,6 @@ services: depends_on: - db - redis - - weaviate volumes: # Mount the storage directory to the container, for storing user files. - ./volumes/app/storage:/app/api/storage @@ -177,6 +184,9 @@ services: APP_API_URL: '' # The DSN for Sentry error reporting. If not set, Sentry error reporting will be disabled. SENTRY_DSN: '' +# uncomment to expose dify-web port to host +# ports: +# - "3000:3000" # The postgres database. db: @@ -211,6 +221,9 @@ services: command: redis-server --requirepass difyai123456 healthcheck: test: ["CMD", "redis-cli","ping"] +# uncomment to expose redis port to host +# ports: +# - "6379:6379" # The Weaviate vector store. weaviate: @@ -232,6 +245,24 @@ services: AUTHENTICATION_APIKEY_USERS: 'hello@dify.ai' AUTHORIZATION_ADMINLIST_ENABLED: 'true' AUTHORIZATION_ADMINLIST_USERS: 'hello@dify.ai' +# uncomment to expose weaviate port to host +# ports: +# - "8080:8080" + + # Qdrant vector store. +# uncomment to use qdrant as vector store. +# (if uncommented, you need to comment out the weaviate service above, +# and set VECTOR_STORE to qdrant in the api & worker service.) +# qdrant: +# image: qdrant/qdrant:latest +# restart: always +# volumes: +# - ./volumes/qdrant:/qdrant/storage +# environment: +# QDRANT__API_KEY: 'difyai123456' +## uncomment to expose qdrant port to host +## ports: +## - "6333:6333" # The nginx reverse proxy. # used for reverse proxying the API service and Web service.