knowledge-base/docker-compose.yml
2025-09-09 12:54:46 +05:30

87 lines
2.5 KiB
YAML

services:
# Qdrant vector database for vector storage
qdrant:
image: qdrant/qdrant:latest
container_name: mem0-qdrant
expose:
- "6333"
volumes:
- qdrant_data:/qdrant/storage
command: >
sh -c "apt-get update && apt-get install -y curl && ./entrypoint.sh"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6333/"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
# Neo4j with APOC for graph relationships
neo4j:
image: neo4j:5.26.4
container_name: mem0-neo4j
environment:
NEO4J_AUTH: ${NEO4J_AUTH:-neo4j/mem0_neo4j_password}
NEO4J_PLUGINS: '["apoc"]'
NEO4J_apoc_export_file_enabled: true
NEO4J_apoc_import_file_enabled: true
NEO4J_apoc_import_file_use__neo4j__config: true
NEO4J_ACCEPT_LICENSE_AGREEMENT: yes
NEO4J_dbms_security_procedures_unrestricted: apoc.*
NEO4J_dbms_security_procedures_allowlist: apoc.*
expose:
- "7474" # HTTP - Internal only
- "7687" # Bolt - Internal only
volumes:
- neo4j_data:/data
- neo4j_logs:/logs
- neo4j_import:/var/lib/neo4j/import
- neo4j_plugins:/plugins
healthcheck:
test: ["CMD", "cypher-shell", "-u", "neo4j", "-p", "${NEO4J_PASSWORD:-mem0_neo4j_password}", "RETURN 1"]
interval: 10s
timeout: 10s
retries: 5
restart: unless-stopped
# Backend API service
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: mem0-backend
environment:
OPENAI_API_KEY: ${OPENAI_COMPAT_API_KEY}
OPENAI_BASE_URL: ${OPENAI_COMPAT_BASE_URL}
EMBEDDER_API_KEY: ${EMBEDDER_API_KEY:-AIzaSyA_}
QDRANT_HOST: qdrant
QDRANT_PORT: 6333
QDRANT_COLLECTION_NAME: ${QDRANT_COLLECTION_NAME:-mem0}
NEO4J_URI: bolt://neo4j:7687
NEO4J_USERNAME: ${NEO4J_USERNAME:-neo4j}
NEO4J_PASSWORD: ${NEO4J_PASSWORD:-mem0_neo4j_password}
LOG_LEVEL: ${LOG_LEVEL:-INFO}
CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:3000}
DEFAULT_MODEL: ${DEFAULT_MODEL:-claude-sonnet-4}
ports:
- "${BACKEND_PORT:-8000}:8000"
depends_on:
qdrant:
condition: service_healthy
neo4j:
condition: service_healthy
restart: unless-stopped
volumes:
- ./backend:/app
command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
volumes:
qdrant_data:
neo4j_data:
neo4j_logs:
neo4j_import:
neo4j_plugins:
networks:
default:
name: mem0-network