version: "3.8" services: # ============================================================================ # PostgreSQL - Base de datos transaccional para FinGuard # ============================================================================ postgres: image: postgres:15-alpine container_name: finguard-postgres environment: POSTGRES_DB: finguard POSTGRES_USER: finguard POSTGRES_PASSWORD: finguard123 volumes: - finguard_postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U finguard -d finguard"] interval: 10s timeout: 5s retries: 5 networks: - finguard-network # ============================================================================ # FinGuard Backend - Java / Spring Boot 3 Core Banking # ============================================================================ finguard-backend: build: context: ./finguard-backend dockerfile: Dockerfile container_name: finguard-backend env_file: - .env environment: SPRING_PROFILES_ACTIVE: sandbox SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/finguard SPRING_DATASOURCE_USERNAME: finguard SPRING_DATASOURCE_PASSWORD: finguard123 AIRWALLEX_API_BASE_URL: https://api.sandbox.airwallex.com AIRWALLEX_CLIENT_ID: ${AIRWALLEX_CLIENT_ID} AIRWALLEX_API_KEY: ${AIRWALLEX_API_KEY} AIRWALLEX_WEBHOOK_SECRET: ${AIRWALLEX_WEBHOOK_SECRET} FINGUARD_TREASURY_MINIMUM_RESERVE_RATIO: 0.10 FINGUARD_TREASURY_MAX_FX_SPREAD: 0.05 FINGUARD_TREASURY_ESCALATION_THRESHOLD: 100000.00 SERVER_PORT: 8080 ports: - "8080:8080" depends_on: postgres: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/api/v1/treasury/health"] interval: 15s timeout: 10s retries: 5 start_period: 40s networks: - finguard-network restart: unless-stopped # ============================================================================ # EROS + MCP Agent - Python / FastAPI / MCP Server # ============================================================================ eros-mcp-agent: build: context: ./eros-mcp-agent dockerfile: Dockerfile container_name: eros-mcp-agent environment: FINGUARD_BACKEND_URL: http://finguard-backend:8080 MCP_LOG_LEVEL: INFO MCP_TIMEOUT_SECONDS: 30 depends_on: finguard-backend: condition: service_healthy networks: - finguard-network restart: unless-stopped # ============================================================================ # MCP Inspector (opcional, para debugging del servidor MCP) # ============================================================================ mcp-inspector: image: mcp-inspector:latest container_name: mcp-inspector environment: MCP_SERVER_URL: http://eros-mcp-agent:8000 ports: - "6272:6272" depends_on: - eros-mcp-agent networks: - finguard-network profiles: - debug networks: finguard-network: driver: bridge volumes: finguard_postgres_data: