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: