Solr MCP

by allenday
Verified
version: '3.8' services: zookeeper: image: zookeeper:3.9 container_name: zookeeper ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zookeeper:2888:3888;2181 volumes: - zookeeper_data:/data - zookeeper_logs:/datalog networks: - solr-net solr1: image: solr:9.5 container_name: solr1 ports: - "8983:8983" environment: - ZK_HOST=zookeeper:2181 - SOLR_JAVA_MEM=-Xms512m -Xmx512m volumes: - solr1_data:/var/solr depends_on: - zookeeper networks: - solr-net command: - solr-foreground - -c # Run in cloud mode healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:8983/solr/"] interval: 5s timeout: 10s retries: 5 solr2: image: solr:9.5 container_name: solr2 ports: - "8984:8983" environment: - ZK_HOST=zookeeper:2181 - SOLR_JAVA_MEM=-Xms512m -Xmx512m volumes: - solr2_data:/var/solr depends_on: - zookeeper - solr1 networks: - solr-net command: - solr-foreground - -c # Run in cloud mode # Initializer service to set up Solr collections (runs once and exits) solr-init: image: solr:9.5 container_name: solr-init depends_on: solr1: condition: service_healthy solr2: condition: service_started networks: - solr-net environment: - ZK_HOST=zookeeper:2181 - SOLR_HOST=solr1 - SOLR_PORT=8983 volumes: - ./solr_config:/config command: > bash -c " # Wait for Solr to be available echo 'Waiting for Solr to be available...' until wget -q --spider http://solr1:8983/solr; do sleep 2 done echo 'Solr is up!' # Delete existing collection if it exists echo 'Deleting existing unified collection if it exists...' curl -s 'http://solr1:8983/solr/admin/collections?action=DELETE&name=unified' || true # Upload the updated config echo 'Uploading updated configuration...' solr zk upconfig -n unified_config -d /config/unified -z zookeeper:2181 # Create the unified collection with the updated config echo 'Creating unified collection...' curl -s 'http://solr1:8983/solr/admin/collections?action=CREATE&name=unified&numShards=1&replicationFactor=1&collection.configName=unified_config' || echo 'Collection creation failed - check solr logs' echo 'Initialization complete!' " # Ollama for embeddings ollama: image: ollama/ollama:latest container_name: ollama ports: - "11434:11434" volumes: - ollama_data:/root/.ollama networks: - solr-net # Run Ollama and pull the model entrypoint: ["/bin/bash", "-c"] command: > "ollama serve & sleep 15 && echo 'Pulling nomic-embed-text model...' && ollama pull nomic-embed-text && echo 'Model pulled successfully' && tail -f /dev/null" healthcheck: test: ["CMD-SHELL", "bash -c 'cat < /dev/null > /dev/tcp/localhost/11434'"] interval: 15s timeout: 5s retries: 5 start_period: 90s # MCP Server mcp-server: build: context: . dockerfile: Dockerfile container_name: mcp-server ports: - "8000:8000" environment: - SOLR_MCP_ZK_HOSTS=zookeeper:2181 - SOLR_MCP_SOLR_URL=http://solr1:8983/solr - SOLR_MCP_DEFAULT_COLLECTION=unified - OLLAMA_BASE_URL=http://ollama:11434 depends_on: solr-init: condition: service_completed_successfully ollama: condition: service_healthy networks: - solr-net volumes: - ./:/app networks: solr-net: driver: bridge volumes: zookeeper_data: zookeeper_logs: solr1_data: solr2_data: ollama_data: