bitip/docker-compose.yml

78 lines
1.7 KiB
YAML

version: '3.8'
services:
# GeoIP database updater
geoipupdate:
image: maxmindinc/geoipupdate:latest
restart: unless-stopped
environment:
- GEOIPUPDATE_ACCOUNT_ID=${GEOIPUPDATE_ACCOUNT_ID}
- GEOIPUPDATE_LICENSE_KEY=${GEOIPUPDATE_LICENSE_KEY}
- GEOIPUPDATE_EDITION_IDS=GeoLite2-City,GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # Update weekly (in hours)
volumes:
- geoip_data:/usr/share/GeoIP
networks:
- bitip-network
# Bitip GeoIP Service
bitip:
build: .
restart: unless-stopped
ports:
- '5172:5172'
environment:
# Server Configuration
- PORT=5172
- BASE_PATH=/
- NODE_ENV=production
# MaxMind Database Path
- MAXMIND_DB_PATH=/usr/share/GeoIP
# API Keys (Change these in production!)
- FRONTEND_API_KEY=your-frontend-api-key-here
- EXTERNAL_API_KEYS=your-external-api-key-1,your-external-api-key-2
# Rate Limiting
- FRONTEND_RATE_WINDOW_MS=60000
- FRONTEND_RATE_MAX=30
- EXTERNAL_RATE_WINDOW_MS=60000
- EXTERNAL_RATE_MAX=1000
# Batch Configuration
- BATCH_LIMIT=100
- DEBOUNCE_MS=2000
# Seq Logging (optional)
- SEQ_URL=${SEQ_URL}
- SEQ_API_KEY=${SEQ_API_KEY}
volumes:
- geoip_data:/usr/share/GeoIP:ro
depends_on:
- geoipupdate
networks:
- bitip-network
healthcheck:
test:
[
'CMD',
'wget',
'--no-verbose',
'--tries=1',
'--spider',
'http://localhost:5172/api/health',
]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
geoip_data:
driver: local
networks:
bitip-network:
driver: bridge