version: '3.8' services: # Redis for caching and rate limiting redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 3 # AgentDB for vector search agentdb: image: agentdb/agentdb:latest ports: - "8080:8080" environment: - AGENTDB_PORT=8080 - AGENTDB_LOG_LEVEL=info volumes: - agentdb-data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 10s timeout: 3s retries: 3 # Lean server for theorem proving lean-server: image: leanprover/lean4:latest ports: - "8081:8081" volumes: - ./src/lean-agentic:/workspace command: ["lean", "--server"] # Rust backend services aimds-backend: build: context: . dockerfile: docker/Dockerfile.rust ports: - "8082:8082" environment: - RUST_LOG=info - RUST_BACKTRACE=1 depends_on: - redis - agentdb healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8082/health"] interval: 10s timeout: 3s retries: 3 # TypeScript API Gateway aimds-gateway: build: context: . dockerfile: docker/Dockerfile.node ports: - "3000:3000" - "9090:9090" # Prometheus metrics environment: - NODE_ENV=development - REDIS_URL=redis://redis:6379 - AGENTDB_URL=http://agentdb:8080 - LEAN_SERVER_URL=http://lean-server:8081 - RUST_BACKEND_URL=http://aimds-backend:8082 env_file: - .env depends_on: - redis - agentdb - lean-server - aimds-backend healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/health"] interval: 10s timeout: 3s retries: 3 # Prometheus for metrics collection prometheus: image: prom/prometheus:latest ports: - "9091:9090" volumes: - ./docker/prometheus.yml:/etc/prometheus/prometheus.yml - prometheus-data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' # Grafana for visualization grafana: image: grafana/grafana:latest ports: - "3001:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=admin volumes: - grafana-data:/var/lib/grafana - ./docker/grafana-dashboards:/etc/grafana/provisioning/dashboards depends_on: - prometheus volumes: redis-data: agentdb-data: prometheus-data: grafana-data: networks: default: driver: bridge