Files
geoip_block_generator/docker-compose.yml
Mateusz Gruszczyński c0afc1554d first commit
2026-02-17 09:04:09 +01:00

128 lines
3.7 KiB
YAML

version: '3.8'
services:
redis:
image: redis:7-alpine
container_name: geoip-redis
restart: unless-stopped
command: redis-server --appendonly yes --maxmemory 512mb --maxmemory-policy allkeys-lru
ports:
- "127.0.0.1:6379:6379"
volumes:
- redis_data:/data
networks:
- geoip-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
geoip-ban:
build: .
container_name: geoip-ban-generator
restart: unless-stopped
ports:
- "${FLASK_PORT:-5000}:${FLASK_PORT:-5000}"
environment:
- FLASK_HOST=0.0.0.0
- FLASK_PORT=${FLASK_PORT:-5000}
- FLASK_DEBUG=${FLASK_DEBUG:-False}
- SECRET_KEY=${SECRET_KEY:-change-me-in-production}
- APP_NAME=${APP_NAME:-GeoIP Ban Generator}
- LOGO_URL=${LOGO_URL:-}
- LOGO_LINK=${LOGO_LINK:-/}
- FOOTER_TEXT=${FOOTER_TEXT:-© 2026 GeoIP Ban Generator}
- FOOTER_LINK=${FOOTER_LINK:-}
- FOOTER_LINK_TEXT=${FOOTER_LINK_TEXT:-Documentation}
- MAXMIND_PRIMARY_URL=${MAXMIND_PRIMARY_URL:-https://github.com/P3TERX/GeoLite.mmdb/releases/download/2026.02.07/GeoLite2-Country.mmdb}
- MAXMIND_FALLBACK_URL=${MAXMIND_FALLBACK_URL:-https://git.io/GeoLite2-Country.mmdb}
- MAXMIND_UPDATE_INTERVAL_DAYS=${MAXMIND_UPDATE_INTERVAL_DAYS:-7}
- MAXMIND_AUTO_UPDATE=${MAXMIND_AUTO_UPDATE:-True}
- CACHE_ENABLED=${CACHE_ENABLED:-True}
- CACHE_TTL_SECONDS=${CACHE_TTL_SECONDS:-3600}
# Redis configuration
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_DB=${REDIS_DB:-0}
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
- REDIS_ENABLED=${REDIS_ENABLED:-true}
- REDIS_CACHE_TTL=${REDIS_CACHE_TTL:-86400}
volumes:
- geoip_data:/app/geoip_db
networks:
- geoip-network
depends_on:
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:${FLASK_PORT:-5000}/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
geoip-scheduler:
build: .
container_name: geoip-scheduler
restart: unless-stopped
environment:
- MAXMIND_PRIMARY_URL=${MAXMIND_PRIMARY_URL:-https://github.com/P3TERX/GeoLite.mmdb/releases/download/2026.02.07/GeoLite2-Country.mmdb}
- MAXMIND_FALLBACK_URL=${MAXMIND_FALLBACK_URL:-https://git.io/GeoLite2-Country.mmdb}
- MAXMIND_UPDATE_INTERVAL_DAYS=${MAXMIND_UPDATE_INTERVAL_DAYS:-7}
- SCHEDULER_ENABLED=${SCHEDULER_ENABLED:-true}
- SCAN_INTERVAL=${SCAN_INTERVAL:-30d}
- SCAN_TIME=${SCAN_TIME:-02:00}
- SCAN_ON_STARTUP=${SCAN_ON_STARTUP:-true}
- CACHE_MAX_AGE_HOURS=${CACHE_MAX_AGE_HOURS:-720}
- PARALLEL_WORKERS=${PARALLEL_WORKERS:-8}
# Redis configuration (for cache invalidation after scan)
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_DB=${REDIS_DB:-0}
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
- REDIS_ENABLED=${REDIS_ENABLED:-true}
volumes:
- geoip_data:/app/geoip_db
networks:
- geoip-network
command: python scheduler.py
depends_on:
- geoip-ban
- redis
geoip-precache:
build: .
container_name: geoip-precache
restart: "no"
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_DB=${REDIS_DB:-0}
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
- REDIS_ENABLED=true
volumes:
- geoip_data:/app/geoip_db
networks:
- geoip-network
command: python precache_configs.py
depends_on:
- redis
- geoip-ban
profiles:
- tools
volumes:
geoip_data:
driver: local
redis_data:
driver: local
networks:
geoip-network:
driver: bridge