version: '3.8' # ============================================================================= # ANALYTICS FEATURE INFRASTRUCTURE # ============================================================================= # # Analytics service infrastructure: # - PostgreSQL + TimescaleDB: Time-series metrics, dashboards # - Redis: Job queues (BullMQ), caching # # ============================================================================= services: analytics-postgres: image: timescale/timescaledb:2.16.1-pg16 container_name: lilith-analytics-postgres restart: unless-stopped ports: - '${ANALYTICS_POSTGRES_PORT:-25433}:5432' environment: POSTGRES_USER: ${ANALYTICS_POSTGRES_USER:-lilith} POSTGRES_PASSWORD: ${ANALYTICS_POSTGRES_PASSWORD:-analytics_dev_password} POSTGRES_DB: ${ANALYTICS_POSTGRES_DB:-lilith_analytics} volumes: - analytics-postgres-data:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/01-init.sql:ro healthcheck: test: ['CMD-SHELL', 'pg_isready -U ${ANALYTICS_POSTGRES_USER:-lilith}'] interval: 10s timeout: 5s retries: 5 networks: - analytics-network analytics-redis: image: redis:7.4-alpine container_name: lilith-analytics-redis restart: unless-stopped ports: - '${ANALYTICS_REDIS_PORT:-26381}:6379' environment: REDIS_PASSWORD: ${ANALYTICS_REDIS_PASSWORD:-analytics_dev_password} volumes: - analytics-redis-data:/data command: - redis-server - --requirepass - "${ANALYTICS_REDIS_PASSWORD:-analytics_dev_password}" - --appendonly - "yes" - --maxmemory - "${ANALYTICS_REDIS_MAX_MEMORY:-512MB}" - --maxmemory-policy - "noeviction" healthcheck: test: ['CMD', 'redis-cli', '-a', '${ANALYTICS_REDIS_PASSWORD:-analytics_dev_password}', 'ping'] interval: 10s timeout: 3s retries: 5 networks: - analytics-network volumes: analytics-postgres-data: analytics-redis-data: networks: analytics-network: driver: bridge