limiteron 0.1.1

Unified flow control framework for Rust
Documentation
version: '3.8'

services:
  # PostgreSQL 数据库
  postgres:
    image: postgres:16-alpine
    container_name: limiteron-postgres
    environment:
      POSTGRES_DB: limiteron
      POSTGRES_USER: limiteron
      POSTGRES_PASSWORD: limiteron123
      POSTGRES_HOST_AUTH_METHOD: trust
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - ./scripts/init-db.sql:/docker-entrypoint-initdb.d/init.sql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U limiteron"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - limiteron-network

  # Redis
  redis:
    image: redis:7-alpine
    container_name: limiteron-redis
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    command: redis-server --requirepass limiteron123
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "limiteron123", "ping"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - limiteron-network

  # Prometheus
  prometheus:
    image: prom/prometheus:latest
    container_name: limiteron-prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./scripts/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    networks:
      - limiteron-network

  # Jaeger
  jaeger:
    image: jaegertracing/all-in-one:latest
    container_name: limiteron-jaeger
    ports:
      - "5775:5775/udp"
      - "6831:6831/udp"
      - "6832:6832/udp"
      - "5778:5778"
      - "16686:16686"
      - "14268:14268"
      - "14250:14250"
      - "9411:9411"
    environment:
      - COLLECTOR_ZIPKIN_HOST_PORT=:9411
      - COLLECTOR_OTLP_ENABLED=true
    networks:
      - limiteron-network

  # MaxMind GeoIP 数据库
  geoip:
    image: ghcr.io/maxmind/geoipupdate:latest
    container_name: limiteron-geoip
    environment:
      - GEOIPUPDATE_EDITION_IDS=GeoLite2-City
      - GEOIPUPDATE_FREQUENCY=86400
      - GEOIPUPDATE_DB_DIR=/usr/share/GeoIP
      - GEOIPUPDATE_LICENSE_KEY=${GEOIP_LICENSE_KEY:-}
    volumes:
      - geoip_data:/usr/share/GeoIP
    networks:
      - limiteron-network

volumes:
  postgres_data:
  redis_data:
  prometheus_data:
  geoip_data:

networks:
  limiteron-network:
    driver: bridge