opusdev/vector-similarity-api
1
1version: '3.8'2 3services:4 # Redis — message broker for BullMQ interest-vector & post-visibility queues5 redis:6 image: redis:7-alpine7 container_name: vector-similarity-redis8 ports:9 - "6379:6379"10 volumes:11 - redis_data:/data12 command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru13 networks:14 - default15 healthcheck:16 test: ["CMD", "redis-cli", "ping"]17 interval: 10s18 timeout: 5s19 retries: 520 restart: unless-stopped21 22 # Python Embedding Microservice23 embedding-service:24 build:25 context: .26 dockerfile: Dockerfile.embedding27 container_name: embedding-service28 ports:29 - "8001:8001"30 environment:31 - PORT=800132 networks: 33 - default34 healthcheck:35 test: ["CMD", "curl", "-f", "http://localhost:8001/health"]36 interval: 30s37 timeout: 10s38 retries: 339 restart: unless-stopped40 41 # Node.js Main API42 api:43 build:44 context: .45 dockerfile: Dockerfile.nodejs46 container_name: vector-similarity-api47 ports:48 - "7860:7860"49 environment:50 - PORT=786051 - EMBEDDING_SERVICE_URL=http://embedding-service:800152 - MONGODB_URI=${MONGODB_URI}53 - QDRANT_URL=${QDRANT_URL}54 - QDRANT_API_KEY=${QDRANT_API_KEY}55 - GROQ_API_KEY=${GROQ_API_KEY}56 - NODE_ENV=production57 # BullMQ Redis connection58 - REDIS_HOST=redis59 - REDIS_PORT=637960 depends_on:61 embedding-service: 62 condition: service_healthy63 redis:64 condition: service_healthy65 networks: 66 - default67 volumes:68 - ./api:/app/api69 - ./models:/app/models70 - ./frontend/dist:/app/frontend/dist71 healthcheck:72 test: ["CMD", "curl", "-f", "http://localhost:7860/health"]73 interval: 30s74 timeout: 10s75 retries: 376 restart: unless-stopped77 78volumes:79 redis_data:80 driver: local81 82networks:83 default:84 name: vector-similarity-network85 driver: bridge 