services: qdrant: image: qdrant/qdrant:v1.14.1 ports: - "6334:6333" qdrant-init: image: curlimages/curl:8.12.1 env_file: - .env depends_on: - qdrant command: - sh - -c - | until curl -sf "$$QDRANT_URL/collections"; do sleep 1 done if curl -sf "$$QDRANT_URL/collections/$$QDRANT_COLLECTION_NAME" >/dev/null; then exit 0 fi curl -sf -X PUT "$$QDRANT_URL/collections/$$QDRANT_COLLECTION_NAME" \ -H 'Content-Type: application/json' \ -d "{ \"vectors\": { \"$$QDRANT_DENSE_VECTOR_NAME\": { \"size\": 1024, \"distance\": \"Cosine\" } }, \"sparse_vectors\": { \"$$QDRANT_SPARSE_VECTOR_NAME\": { \"modifier\": \"idf\" } } }" restart: "no" index: build: context: ./index depends_on: - qdrant ports: - "8001:8000" logging: driver: json-file options: max-size: "20m" max-file: "5" tag: "index-service" labels: "service" labels: - "service=index-service" search: build: context: ./search env_file: - .env depends_on: qdrant-init: condition: service_completed_successfully ports: - "8002:8000" logging: driver: json-file options: max-size: "20m" max-file: "5" tag: "search-service" labels: "service" labels: - "service=search-service"