docker-compose.ymlโข2.21 kB
services:
# Redis (for agent memory)
redis:
image: redis:7-alpine
container_name: tutoring_redis
ports:
- "6379:6379"
networks:
- tutoring_network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
# RAG MCP Server - Provides RAG tools via MCP protocol
rag_mcp_server:
build:
context: .
dockerfile: Dockerfile.rag_server
container_name: rag_mcp_server
ports:
- "9000:9000"
volumes:
- .:/app
environment:
- PYTHONUNBUFFERED=1
- PINECONE_API_KEY=${PINECONE_API_KEY}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- PINECONE_ENVIRONMENT=${PINECONE_ENVIRONMENT:-us-east-1}
- AZURE_STORAGE_CONNECTION_STRING=${AZURE_STORAGE_CONNECTION_STRING}
networks:
- tutoring_network
restart: unless-stopped
# MCP Host - Agent orchestration layer
mcp_host:
build:
context: .
dockerfile: Dockerfile.mcp_host
container_name: mcp_host
ports:
- "8000:8000"
volumes:
- .:/app
environment:
- PYTHONUNBUFFERED=1
- OPENAI_API_KEY=${OPENAI_API_KEY}
- AZURE_STORAGE_CONNECTION_STRING=${AZURE_STORAGE_CONNECTION_STRING}
- RAG_MCP_SERVER_URL=http://rag_mcp_server:9000/mcp
# Neon PostgreSQL config
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_HOST=${POSTGRES_HOST}
- POSTGRES_PORT=${POSTGRES_PORT}
- POSTGRES_DB=${POSTGRES_DB}
# Redis config
- REDIS_URL=redis://redis:6379/0
# Other required env vars
- PINECONE_API_KEY=${PINECONE_API_KEY}
- PINECONE_ENVIRONMENT=${PINECONE_ENVIRONMENT:-us-east-1}
- LLM_API_KEY=${OPENAI_API_KEY}
- OMNI_MEMORY_PROVIDER=redis
networks:
- tutoring_network
depends_on:
redis:
condition: service_healthy
rag_mcp_server:
condition: service_started
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8000/health || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
tutoring_network:
driver: bridge