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