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: - '3000:3000' environment: # Server Configuration - PORT=3000 - 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:3000/api/health', ] interval: 30s timeout: 10s retries: 3 start_period: 40s volumes: geoip_data: driver: local networks: bitip-network: driver: bridge