@codai/cbd
Version:
Codai Better Database - High-Performance Vector Memory System with HPKV-inspired architecture and MCP server
204 lines (191 loc) • 4.97 kB
YAML
# 🐳 CBD Universal Database - Production Docker Compose
version: '3.8'
services:
# CBD Core Database Service
cbd-core:
build:
context: .
dockerfile: Dockerfile
container_name: cbd-universal-database
restart: unless-stopped
ports:
- "4180:4180"
environment:
- NODE_ENV=production
- CBD_LOG_LEVEL=info
- CBD_CLUSTER_MODE=true
- CBD_SECURITY_LEVEL=enterprise
volumes:
- cbd_data:/app/data
- cbd_logs:/app/logs
networks:
- cbd_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4180/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# CBD Collaboration Service
cbd-collaboration:
build:
context: .
dockerfile: Dockerfile
container_name: cbd-collaboration-service
restart: unless-stopped
ports:
- "4600:4600"
environment:
- NODE_ENV=production
- SERVICE_TYPE=collaboration
volumes:
- cbd_collaboration_data:/app/data
networks:
- cbd_network
depends_on:
- cbd-core
command: ["node", "cbd-collaboration-service.cjs"]
# CBD AI Analytics Engine
cbd-analytics:
build:
context: .
dockerfile: Dockerfile
container_name: cbd-ai-analytics
restart: unless-stopped
ports:
- "4700:4700"
environment:
- NODE_ENV=production
- SERVICE_TYPE=analytics
volumes:
- cbd_analytics_data:/app/data
- cbd_models:/app/models
networks:
- cbd_network
depends_on:
- cbd-core
command: ["node", "cbd-ai-analytics-engine.cjs"]
# CBD GraphQL Gateway
cbd-graphql:
build:
context: .
dockerfile: Dockerfile
container_name: cbd-graphql-gateway
restart: unless-stopped
ports:
- "4800:4800"
environment:
- NODE_ENV=production
- SERVICE_TYPE=graphql
networks:
- cbd_network
depends_on:
- cbd-core
command: ["node", "cbd-graphql-gateway.cjs"]
# Nginx Load Balancer
cbd-nginx:
image: nginx:alpine
container_name: cbd-load-balancer
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/nginx/ssl:ro
networks:
- cbd_network
depends_on:
- cbd-core
- cbd-collaboration
- cbd-analytics
- cbd-graphql
# Redis for Caching and Session Management
cbd-redis:
image: redis:7-alpine
container_name: cbd-redis
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- cbd_redis_data:/data
networks:
- cbd_network
command: redis-server --appendonly yes --maxmemory 1gb --maxmemory-policy allkeys-lru
# PostgreSQL for Metadata Storage
cbd-postgres:
image: postgres:15-alpine
container_name: cbd-postgres
restart: unless-stopped
environment:
- POSTGRES_DB=cbd_metadata
- POSTGRES_USER=cbd_admin
- POSTGRES_PASSWORD=${CBD_POSTGRES_PASSWORD:-cbd_secure_pass_2025}
volumes:
- cbd_postgres_data:/var/lib/postgresql/data
- ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
networks:
- cbd_network
ports:
- "5432:5432"
# Monitoring - Prometheus
prometheus:
image: prom/prometheus:latest
container_name: cbd-prometheus
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus_data:/prometheus
networks:
- cbd_network
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
# Monitoring - Grafana
grafana:
image: grafana/grafana:latest
container_name: cbd-grafana
restart: unless-stopped
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=${CBD_GRAFANA_PASSWORD:-cbd_admin_2025}
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/dashboards:/etc/grafana/provisioning/dashboards:ro
- ./grafana/datasources:/etc/grafana/provisioning/datasources:ro
networks:
- cbd_network
depends_on:
- prometheus
# Networks
networks:
cbd_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
# Volumes
volumes:
cbd_data:
driver: local
cbd_logs:
driver: local
cbd_collaboration_data:
driver: local
cbd_analytics_data:
driver: local
cbd_models:
driver: local
cbd_redis_data:
driver: local
cbd_postgres_data:
driver: local
prometheus_data:
driver: local
grafana_data:
driver: local