services: # TimescaleDB timescale: image: timescale/timescaledb:latest-pg16 container_name: mcpulse-timescale environment: POSTGRES_DB: mcp_analytics POSTGRES_USER: mcp_user POSTGRES_PASSWORD: ${DB_PASSWORD:-changeme} volumes: - timescale-data:/var/lib/postgresql/data ports: - "5434:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U mcp_user -d mcp_analytics"] interval: 10s timeout: 5s retries: 5 networks: - mcpulse # MCPulse Server mcpulse: image: ghcr.io/sirrobot01/mcpulse:latest container_name: mcpulse-server environment: MCPULSE_DATABASE_HOST: timescale MCPULSE_DATABASE_PORT: 5432 MCPULSE_DATABASE_DATABASE: mcp_analytics MCPULSE_DATABASE_USERNAME: mcp_user MCPULSE_DATABASE_PASSWORD: ${DB_PASSWORD:-changeme} MCPULSE_SERVER_PORT: 8080 MCPULSE_SERVER_GRPC_PORT: 9090 MCPULSE_SERVER_HOST: 0.0.0.0 MCPULSE_AUTH_JWT_SECRET: ${JWT_SECRET:-changeme_this_secret_key} ports: - "8080:8080" # HTTP API + Prometheus metrics at /metrics - "9090:9090" # gRPC API volumes: - ./config.yaml:/app/config.yaml:ro depends_on: timescale: condition: service_healthy healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 networks: - mcpulse volumes: timescale-data: driver: local networks: mcpulse: driver: bridge