services: # DAGI Router - Core routing service router: build: context: . dockerfile: Dockerfile container_name: dagi-router ports: - "9102:9102" environment: - DAGI_ROUTER_CONFIG=/app/router-config.yml - RBAC_BASE_URL=http://rbac:9200 - DEVTOOLS_BASE_URL=http://devtools:8008 - CREWAI_BASE_URL=http://crewai:9010 - RAG_SERVICE_URL=http://rag-service:9500 - MEMORY_SERVICE_URL=http://memory-service:8000 volumes: - ./router-config.yml:/app/router-config.yml:ro - ./logs:/app/logs depends_on: - devtools - crewai - rbac networks: - dagi-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9102/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s # DevTools Backend devtools: build: context: ./devtools-backend dockerfile: Dockerfile container_name: dagi-devtools ports: - "8008:8008" volumes: - ./workspace:/workspace - ./logs:/app/logs networks: - dagi-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8008/health"] interval: 30s timeout: 10s retries: 3 # CrewAI Orchestrator crewai: build: context: ./orchestrator dockerfile: Dockerfile container_name: dagi-crewai ports: - "9010:9010" environment: - ROUTER_URL=http://router:9102 volumes: - ./logs:/app/logs networks: - dagi-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9010/health"] interval: 30s timeout: 10s retries: 3 # Bot Gateway (with DAARWIZZ) gateway: build: context: ./gateway-bot dockerfile: Dockerfile container_name: dagi-gateway ports: - "9300:9300" environment: - ROUTER_URL=http://router:9102 - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN:-} - DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN:-} - DAARWIZZ_TELEGRAM_BOT_TOKEN=${DAARWIZZ_TELEGRAM_BOT_TOKEN:-} - DAARWIZZ_NAME=${DAARWIZZ_NAME:-DAARWIZZ} - DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt - HELION_TELEGRAM_BOT_TOKEN=${HELION_TELEGRAM_BOT_TOKEN:-} - HELION_NAME=${HELION_NAME:-Helion} - HELION_PROMPT_PATH=/app/gateway-bot/helion_prompt.txt - MEMORY_SERVICE_URL=http://memory-service:8000 volumes: - ./logs:/app/logs depends_on: - router networks: - dagi-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9300/health"] interval: 30s timeout: 10s retries: 3 # microDAO RBAC Service rbac: build: context: ./microdao dockerfile: Dockerfile container_name: dagi-rbac ports: - "9200:9200" environment: - DATABASE_URL=${RBAC_DATABASE_URL:-sqlite:///rbac.db} volumes: - ./data/rbac:/app/data - ./logs:/app/logs networks: - dagi-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9200/health"] interval: 30s timeout: 10s retries: 3 # RAG Service rag-service: build: context: ./services/rag-service dockerfile: Dockerfile container_name: dagi-rag-service ports: - "9500:9500" environment: - PG_DSN=${PG_DSN:-postgresql+psycopg2://postgres:postgres@city-db:5432/daarion_city} - EMBED_MODEL_NAME=${EMBED_MODEL_NAME:-BAAI/bge-m3} - EMBED_DEVICE=${EMBED_DEVICE:-cpu} - ROUTER_BASE_URL=http://router:9102 volumes: - ./logs:/app/logs - rag-model-cache:/root/.cache/huggingface depends_on: - router networks: - dagi-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9500/health"] interval: 30s timeout: 10s retries: 3 # PostgreSQL Database postgres: image: postgres:15-alpine container_name: dagi-postgres ports: - "5432:5432" environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=daarion_memory volumes: - postgres-data:/var/lib/postgresql/data - ./services/memory-service/init.sql:/docker-entrypoint-initdb.d/init.sql networks: - dagi-network restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 # Memory Service memory-service: build: context: ./services/memory-service dockerfile: Dockerfile container_name: dagi-memory-service ports: - "8000:8000" environment: - DATABASE_URL=${MEMORY_DATABASE_URL:-postgresql://postgres:postgres@postgres:5432/daarion_memory} - LOG_LEVEL=${LOG_LEVEL:-INFO} volumes: - ./logs:/app/logs - memory-data:/app/data depends_on: - postgres networks: - dagi-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s volumes: rag-model-cache: driver: local memory-data: driver: local postgres-data: driver: local networks: dagi-network: driver: bridge name: dagi-network