Skip to content

Releases: tuan78/gogeoip

Release list

v1.0.0

Choose a tag to compare

@tuan78 tuan78 released this 27 Mar 10:10

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 APIGET /lookup?ip=<address> returns country and continent data for any IPv4 or IPv6 address
  • Health checkGET /ping reports service readiness; returns 503 until the database is loaded
  • Zero-downtime database refresh — hot-swaps the MaxMind .mmdb file on a configurable schedule (default: 24h) without dropping requests
  • Optional Redis caching — caches /lookup responses with a configurable TTL and key prefix; automatically disabled when REDIS_ADDR is not set
  • Structured JSON access logging — every request logged to stdout with method, path, status_code, duration_ms, and optional request_id / trace_id fields for ingestion into Datadog, Loki, or Grafana
  • Graceful shutdown — drains in-flight requests on SIGINT / SIGTERM
  • Pure stdlib — built on net/http with 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