| version: '3.8' | |
| services: | |
| postgres: | |
| image: postgres:15-alpine | |
| container_name: hyperflow-db | |
| environment: | |
| POSTGRES_USER: hyperflow_admin | |
| POSTGRES_PASSWORD: hyperflow_secure_pass | |
| POSTGRES_DB: hyperflow_db | |
| ports: | |
| - "5432:5432" | |
| volumes: | |
| - postgres_data:/var/lib/postgresql/data | |
| healthcheck: | |
| test: ["CMD-SHELL", "pg_isready -U hyperflow_admin -d hyperflow_db"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| redis: | |
| image: redis:7-alpine | |
| container_name: hyperflow-redis | |
| ports: | |
| - "6379:6379" | |
| volumes: | |
| - redis_data:/data | |
| healthcheck: | |
| test: ["CMD", "redis-cli", "ping"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| kafka: | |
| image: confluentinc/cp-kafka:7.4.0 | |
| container_name: hyperflow-kafka | |
| ports: | |
| - "9092:9092" | |
| environment: | |
| KAFKA_NODE_ID: 1 | |
| KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT' | |
| KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092' | |
| KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 | |
| KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 | |
| KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 | |
| KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 | |
| KAFKA_PROCESS_ROLES: 'broker,controller' | |
| KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093' | |
| KAFKA_LISTENERS: 'PLAINTEXT://0.0.0.0:29092,CONTROLLER://0.0.0.0:29093,PLAINTEXT_HOST://0.0.0.0:9092' | |
| KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT' | |
| KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER' | |
| KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs' | |
| CLUSTER_ID: 'MkU3OEVBNTcwNTJENDM2Qk' | |
| healthcheck: | |
| test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server localhost:9092 --list || exit 1"] | |
| interval: 15s | |
| timeout: 10s | |
| retries: 5 | |
| api: | |
| build: ./backend | |
| container_name: hyperflow-api | |
| command: uvicorn backend.api.main:app --host 0.0.0.0 --port 8000 | |
| ports: | |
| - "8000:8000" | |
| environment: | |
| - POSTGRES_URL=postgresql://hyperflow_admin:hyperflow_secure_pass@postgres:5432/hyperflow_db | |
| - REDIS_URL=redis://redis:6379 | |
| depends_on: | |
| - postgres | |
| - redis | |
| mcp-server: | |
| build: ./backend | |
| container_name: hyperflow-mcp-server | |
| command: uvicorn backend.mcp_server:mcp_app --host 0.0.0.0 --port 8001 --workers 2 | |
| ports: | |
| - "8001:8001" | |
| environment: | |
| - HYPERFLOW_API_URL=http://api:8000 | |
| depends_on: | |
| - api | |
| volumes: | |
| postgres_data: | |
| redis_data: | |