# Deployment template — copy to docker-compose.yml and create .env from .env.example. # Policy: no committed default passwords; all secrets come from .env or your secret manager. version: '3.8' services: codegraphcontext: build: context: . dockerfile: Dockerfile container_name: codegraphcontext volumes: - ./:/workspace - cgc-data:/root/.codegraphcontext environment: - PYTHONUNBUFFERED=1 - DEFAULT_DATABASE=${DEFAULT_DATABASE:-falkordb} - FALKORDB_HOST=${FALKORDB_HOST:-} - FALKORDB_PORT=${FALKORDB_PORT:-6379} - NEO4J_URI=${NEO4J_URI:-} - NEO4J_USERNAME=${NEO4J_USERNAME:-neo4j} - NEO4J_PASSWORD=${NEO4J_PASSWORD:-} stdin_open: true tty: true command: bash networks: - cgc-network falkordb: image: falkordb/falkordb:latest healthcheck: test: [ "CMD", "redis-cli", "PING" ] interval: 10s timeout: 5s retries: 10 start_period: 15s container_name: cgc-falkordb ports: - "127.0.0.1:6379:6379" volumes: - falkordb-data:/data networks: - cgc-network profiles: - falkordb neo4j: image: neo4j:5.15.0 healthcheck: test: [ "CMD-SHELL", "cypher-shell -u neo4j -p \"$$NEO4J_PASSWORD\" 'RETURN 1' || exit 1" ] interval: 10s timeout: 10s retries: 10 start_period: 30s container_name: cgc-neo4j ports: - "127.0.0.1:7474:7474" - "127.0.0.1:7687:7687" environment: - NEO4J_AUTH=neo4j/${NEO4J_PASSWORD:?Set NEO4J_PASSWORD in .env} - NEO4J_PLUGINS=["apoc"] - NEO4J_dbms_security_procedures_unrestricted=apoc.* - NEO4J_dbms_memory_heap_max__size=2G volumes: - neo4j-data:/data - neo4j-logs:/logs networks: - cgc-network profiles: - neo4j volumes: cgc-data: driver: local falkordb-data: driver: local neo4j-data: driver: local neo4j-logs: driver: local networks: cgc-network: driver: bridge