first commit
This commit is contained in:
127
docker-compose.yml
Normal file
127
docker-compose.yml
Normal file
@@ -0,0 +1,127 @@
|
||||
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
|
||||
Reference in New Issue
Block a user