services:
  cognee:
    container_name: cognee
    networks:
      - cognee-network
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/app
      - /app/cognee-frontend/ # Ignore frontend code
    environment:
      - HOST=0.0.0.0
      - ENVIRONMENT=local
      - PYTHONPATH=.
    ports:
      - 8000:8000
      # - 5678:5678 # Debugging
    deploy:
      resources:
        limits:
          cpus: '2.0'
          memory: 8GB

  frontend:
    container_name: frontend
    build:
      context: ./cognee-frontend
      dockerfile: Dockerfile
    volumes:
      - ./cognee-frontend/src:/app/src
      - ./cognee-frontend/public:/app/public
    ports:
      - 3000:3000
      # - 9229:9229 # Debugging
    networks:
      - cognee-network

  neo4j:
    image: neo4j:latest
    container_name: neo4j
    profiles:
      - neo4j
    ports:
      - 7474:7474
      - 7687:7687
    environment:
      - NEO4J_AUTH=neo4j/pleaseletmein
      - NEO4J_PLUGINS=["apoc"]
    networks:
      - cognee-network

  falkordb:
    image: falkordb/falkordb:edge
    container_name: falkordb
    profiles:
      - falkordb
    ports:
      - 6379:6379
      - 3001:3000
    networks:
      - cognee-network

  postgres:
    image: pgvector/pgvector:pg17
    container_name: postgres
    environment:
      POSTGRES_USER: cognee
      POSTGRES_PASSWORD: cognee
      POSTGRES_DB: cognee_db
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - 5432:5432
    networks:
      - cognee-network

networks:
  cognee-network:
    name: cognee-network

volumes:
  postgres_data:

