Releases: tuan78/gogeoip
Releases · tuan78/gogeoip
Release list
v1.0.0
v1.0.0 — 2026-03-27
Initial stable release of gogeoip, a lightweight self-contained GeoIP lookup HTTP service powered by the MaxMind GeoLite2-Country database.
Features
- IP lookup API —
GET /lookup?ip=<address>returns country and continent data for any IPv4 or IPv6 address - Health check —
GET /pingreports service readiness; returns503until the database is loaded - Zero-downtime database refresh — hot-swaps the MaxMind
.mmdbfile on a configurable schedule (default: 24h) without dropping requests - Optional Redis caching — caches
/lookupresponses with a configurable TTL and key prefix; automatically disabled whenREDIS_ADDRis not set - Structured JSON access logging — every request logged to stdout with
method,path,status_code,duration_ms, and optionalrequest_id/trace_idfields for ingestion into Datadog, Loki, or Grafana - Graceful shutdown — drains in-flight requests on
SIGINT/SIGTERM - Pure stdlib — built on
net/httpwith no heavy framework dependencies
Deployment
- Docker — multi-stage build producing a minimal distroless (
gcr.io/distroless/static-debian12:nonroot) runtime image - Docker Compose — pre-wired setup with Redis included
- Kubernetes — manifests with health probes, resource limits, and optional Ingress
Configuration
All configuration is via environment variables. Required: MAXMIND_ACCOUNT_ID, MAXMIND_LICENSE_KEY. See README.md for the full reference.
Requirements
- Go 1.25+
- A free MaxMind account