2025-12-05 17:52:08 +09:00
2025-12-05 17:52:08 +09:00
2025-12-05 17:40:46 +09:00
2025-12-05 17:40:46 +09:00
2025-12-05 17:40:46 +09:00
2025-12-05 17:40:46 +09:00
2025-12-05 17:40:46 +09:00
2025-12-05 17:40:46 +09:00
2025-12-05 17:40:46 +09:00
2025-12-05 17:40:46 +09:00
2025-12-05 17:40:46 +09:00
2025-12-05 17:40:46 +09:00

GeoIP REST (Go Fiber)

간단한 GeoIP 조회 API입니다. GeoLite2-City.mmdb를 사용해 IP를 나라/지역/도시/위도/경도로 매핑합니다.

요구 사항

  • Go 1.25+
  • GeoLite2-City.mmdb (레포지토리 루트에 위치)
  • Docker / Docker Compose (컨테이너 실행 시)

설치 및 실행

로컬 (Go)

go mod tidy            # 필요한 경우 go.sum 생성
PORT=8080 GEOIP_DB_PATH=./GeoLite2-City.mmdb go run ./cmd/server

Docker Compose

docker compose up --build
  • GeoLite2-City.mmdb가 컨테이너에 read-only로 마운트됩니다.
  • 기본 포트: 8080.

환경 변수

  • PORT (기본 8080): 서버 리스닝 포트
  • GEOIP_DB_PATH (기본 /data/GeoLite2-City.mmdb): GeoIP 데이터베이스 경로

사용법

  • 헬스체크: GET /health
  • 조회: GET /lookup?ip=<IPv4|IPv6>
    • ip 생략 시 호출자 IP를 사용

예시:

curl "http://localhost:8080/lookup?ip=1.1.1.1"

응답 예시:

{
  "IP": "1.1.1.1",
  "Country": "Australia",
  "Region": "Queensland",
  "City": "South Brisbane",
  "Address": "South Brisbane, Queensland, Australia",
  "Latitude": -27.4748,
  "Longitude": 153.017
}

개발 참고

  • 주요 코드: cmd/server/main.go, internal/geo/resolver.go
  • 테스트 실행: go test ./...
  • 컨테이너 빌드: docker build -t geoip:local .
Description
No description provided
Readme 33 MiB
Languages
Go 95.1%
PLpgSQL 2.7%
Dockerfile 2.2%