# Default Docker Compose - Points to Minimal deployment
# For other modes, use:
# - docker-compose -f docker/docker-compose.standard.yml up
# - docker-compose -f docker/docker-compose.full.yml up
# Or use Makefile commands:
# - make docker-minimal
# - make docker-standard
# - make docker-full
version: '3.8'
services:
neo4j:
image: neo4j:5.15-community
container_name: codebase-rag-neo4j
ports:
- "${NEO4J_HTTP_PORT:-7474}:7474"
- "${NEO4J_BOLT_PORT:-7687}:7687"
environment:
- NEO4J_AUTH=${NEO4J_USER:-neo4j}/${NEO4J_PASSWORD:-password}
- NEO4J_PLUGINS=["apoc"]
- NEO4J_dbms_security_procedures_unrestricted=apoc.*
- NEO4J_dbms_security_procedures_allowlist=apoc.*
- NEO4J_dbms_memory_heap_initial__size=512m
- NEO4J_dbms_memory_heap_max__size=2G
- NEO4J_dbms_memory_pagecache_size=512m
volumes:
- neo4j_data:/data
- neo4j_logs:/logs
- neo4j_import:/var/lib/neo4j/import
- neo4j_plugins:/plugins
healthcheck:
test: ["CMD-SHELL", "cypher-shell -u ${NEO4J_USER:-neo4j} -p ${NEO4J_PASSWORD:-password} 'RETURN 1' || exit 1"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
- codebase-rag
restart: unless-stopped
mcp:
build:
context: .
dockerfile: docker/Dockerfile.minimal
image: royisme/codebase-rag:minimal
container_name: codebase-rag-mcp
ports:
# Two-Port Architecture
- "${MCP_PORT:-8000}:8000" # MCP SSE Service (PRIMARY)
- "${WEB_UI_PORT:-8080}:8080" # Web UI + REST API (SECONDARY)
environment:
- APP_NAME=${APP_NAME:-Code Graph Knowledge System}
- DEBUG=${DEBUG:-false}
- HOST=0.0.0.0
# Two-Port Configuration
- MCP_PORT=8000 # MCP SSE service port (PRIMARY)
- WEB_UI_PORT=8080 # Web UI + REST API port (SECONDARY)
# Legacy (deprecated)
- PORT=8000
- DEPLOYMENT_MODE=minimal
- ENABLE_KNOWLEDGE_RAG=false
- ENABLE_AUTO_EXTRACTION=false
- ENABLE_MEMORY_SEARCH=false
- NEO4J_URI=bolt://neo4j:7687
- NEO4J_USER=${NEO4J_USER:-neo4j}
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-password}
- NEO4J_DATABASE=${NEO4J_DATABASE:-neo4j}
- CONNECTION_TIMEOUT=${CONNECTION_TIMEOUT:-30}
- OPERATION_TIMEOUT=${OPERATION_TIMEOUT:-120}
volumes:
- ${REPOS_PATH:-./repos}:/repos
- ./data:/data
- ./logs:/app/logs
depends_on:
neo4j:
condition: service_healthy
healthcheck:
# Health check on Web UI port (where REST API lives)
test: ["CMD", "curl", "-f", "http://localhost:8080/api/v1/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- codebase-rag
restart: unless-stopped
volumes:
neo4j_data:
driver: local
neo4j_logs:
driver: local
neo4j_import:
driver: local
neo4j_plugins:
driver: local
networks:
codebase-rag:
driver: bridge