version: '3.8'
services:
# FalkorDB - Knowledge Graph Database
falkordb:
image: falkordb/falkordb:latest
container_name: bitemporal-falkordb
ports:
- "6379:6379"
volumes:
- falkordb_data:/data
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
# PostgreSQL - Webhook Configuration Storage
postgres:
image: postgres:15-alpine
container_name: bitemporal-postgres
environment:
POSTGRES_DB: automation_db
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
# MCP Server - Main Application
mcp-server:
build: .
container_name: bitemporal-mcp-server
ports:
- "8080:8080"
environment:
# FalkorDB Configuration
FALKORDB_HOST: falkordb
FALKORDB_PORT: 6379
FALKORDB_DATABASE: graphiti
# PostgreSQL Configuration
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
POSTGRES_DB: automation_db
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
# OpenAI Configuration (optional)
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
OPENAI_MODEL: gpt-4o-mini
# Server Configuration
PORT: 8080
HOST: 0.0.0.0
# Memory Management
DEFAULT_GROUP_ID: default
SESSION_TTL_MINUTES: 30
MAX_SESSIONS: 1000
CLEANUP_INTERVAL_SECONDS: 300
CONNECTION_IDLE_TIMEOUT: 600
depends_on:
falkordb:
condition: service_healthy
postgres:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
falkordb_data:
postgres_data:
networks:
default:
name: bitemporal-network