Knowledge-Universe / docker-compose.yml
vlsiddarth's picture
Add Knowledge Universe backend implementation
3acb982
version: '3.8'
services:
# Redis Cache Cluster
redis:
image: redis:7-alpine
container_name: ku-redis
ports:
- "6379:6379"
command: >
redis-server
--maxmemory 2gb
--maxmemory-policy allkeys-lru
--save ""
--appendonly no
volumes:
- redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
networks:
- ku-network
# Knowledge Universe API
api:
build:
context: .
dockerfile: Dockerfile
container_name: ku-api
ports:
- "8000:8000"
- "9090:9090" # Metrics
environment:
# Redis Configuration
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_DB=0
# Cache Settings
- CACHE_TTL_REQUEST=14400
- CACHE_TTL_SOURCE=43200
- MAX_CACHE_MEMORY_GB=2
# Crawler Settings
- CRAWLER_TIMEOUT=8
- CRAWLERS_PARALLEL=5
# API Keys (load from .env file)
- GITHUB_TOKEN=${GITHUB_TOKEN}
- YOUTUBE_API_KEY=${YOUTUBE_API_KEY}
- KAGGLE_USERNAME=${KAGGLE_USERNAME}
- KAGGLE_KEY=${KAGGLE_KEY}
# Application Settings
- DEBUG=false
- LOG_LEVEL=INFO
- ENABLE_METRICS=true
depends_on:
redis:
condition: service_healthy
volumes:
- ./logs:/app/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
restart: unless-stopped
networks:
- ku-network
# Prometheus (Optional - for monitoring)
prometheus:
image: prom/prometheus:latest
container_name: ku-prometheus
ports:
- "9091:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
networks:
- ku-network
profiles:
- monitoring
# Grafana (Optional - for dashboards)
grafana:
image: grafana/grafana:latest
container_name: ku-grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana-data:/var/lib/grafana
depends_on:
- prometheus
networks:
- ku-network
profiles:
- monitoring
volumes:
redis-data:
prometheus-data:
grafana-data:
networks:
ku-network:
driver: bridge