version: '3.8'
services:
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:
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:
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:
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
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