name: docChat services: # ---------------- infra ---------------- valkey: image: valkey/valkey:7 ports: ["6379:6379"] mongo: image: mongo:7 ports: ["27018:27017"] volumes: [mongo_data:/data/db] qdrant: image: qdrant/qdrant:v1.13.4 ports: ["6333:6333"] volumes: [qdrant_data:/qdrant/storage] # ---------------- embedder ---------------- embedder: image: adityamishra9/docchat-embedder:latest ports: ["8001:8000"] healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/embeddings"] interval: 10s timeout: 5s retries: 10 # ---------------- backend API ---------------- server: image: adityamishra9/docchat-server:latest command: ["node", "index.js"] restart: unless-stopped environment: NODE_ENV: production PORT: "8000" CLERK_PUBLISHABLE_KEY: pk_test_cG9zc2libGUtcGFycm90LTEyLmNsZXJrLmFjY291bnRzLmRldiQ CLERK_SECRET_KEY: sk_test_ZZBqpYa08VLDOTzJoc7fbSMFENlPOY8O7GyYdzmQq5 CORS_ORIGIN: http://localhost:49151 MONGODB_URI: mongodb://mongo:27017 MONGODB_DB: docchat REDIS_HOST: valkey REDIS_PORT: "6379" QDRANT_URL: http://qdrant:6333 EMBEDDINGS_URL: http://embedder:8000/embeddings GEMINI_API_KEY: AIzaSyCS8WEU5KES4R3QAMQQ0SaCAkIpkKno6LY depends_on: [valkey, mongo, qdrant, embedder] ports: ["8000:8000"] # ---------------- worker ---------------- worker: image: adityamishra9/docchat-server:latest command: ["node", "worker.js"] restart: unless-stopped environment: NODE_ENV: production MONGODB_URI: mongodb://mongo:27017 MONGODB_DB: docchat REDIS_HOST: valkey REDIS_PORT: "6379" QDRANT_URL: http://qdrant:6333 EMBEDDINGS_URL: http://embedder:8000/embeddings OCR_ENABLED: "true" OCR_LANGS: eng OCR_DPI_LIST: "300,400,600" OCR_DPI: "300" OCR_TEXT_MIN_THRESHOLD: "800" # OCR_MAX_PAGES: "" TESSDATA_PREFIX: /usr/share/tesseract-ocr/4.00/tessdata depends_on: [valkey, mongo, qdrant, embedder] # ---------------- frontend ---------------- client: image: adityamishra9/docchat-client:latest restart: unless-stopped environment: NODE_ENV: development PORT: "49151" HOSTNAME: "0.0.0.0" NEXT_PUBLIC_API_BASE: http://localhost:8000 NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: pk_test_cG9zc2libGUtcGFycm90LTEyLmNsZXJrLmFjY291bnRzLmRldiQ CLERK_SECRET_KEY: sk_test_ZZBqpYa08VLDOTzJoc7fbSMFENlPOY8O7GyYdzmQq5 depends_on: [server] ports: ["49151:49151"] volumes: mongo_data: qdrant_data: ## NOTE: Dummy project — secrets are inlined here for easy setup (will be moved to .env soon)