diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4314d8b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# Cache dependency +FROM golang:1.22-alpine AS go-mod-cache + +WORKDIR /app + +COPY go.mod go.sum ./ + +RUN go mod download + +# BUILD +FROM go-mod-cache AS build + +WORKDIR /app + +COPY internal . + +RUN go build . -o ip-info + +# RUN IMAGE +FROM alpine + +RUN apk update && apk upgrade && \ + apk add --no-cache tzdata + +WORKDIR /app +COPY --from=build /app/ip-info . +COPY mmdbmeld.yml . + +CMD ["./ip-info"] \ No newline at end of file diff --git a/configs/config.go b/configs/config.go index c682f86..546d59a 100644 --- a/configs/config.go +++ b/configs/config.go @@ -5,7 +5,12 @@ var GeoDbSourcePaths = []string{ "https://cdn.jsdelivr.net/npm/@ip-location-db/geolite2-asn/geolite2-asn-ipv4.csv", } -const GeoDbFolder = "data/" +const ( + GeoDbFolder = "data/" + MmdbmeldConfig = "mmdbmeld.yml" + MmdbDbFile = GeoDbFolder + "geoip-v4.mmdb" +) -const MmdbmeldConfig = "mmdbmeld.yml" -const MmdbDbFile = GeoDbFolder + "geoip-v4.mmdb" +const ( + ApiDefaultPort = "8080" +) diff --git a/data/geoip-v4.mmdb b/data/geoip-v4.mmdb index f096e5e..238bdf5 100644 Binary files a/data/geoip-v4.mmdb and b/data/geoip-v4.mmdb differ diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d3b3551 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +services: + ip-info: + build: . + ports: + - "8080:8080" + restart: always + volumes: + - ./data:/app/data + environment: + - GIN_TRUSTED_PROXY_IP=127.0.0.1 \ No newline at end of file diff --git a/internal/services/api/main.go b/internal/services/api/main.go index 555351a..64c8d21 100644 --- a/internal/services/api/main.go +++ b/internal/services/api/main.go @@ -6,6 +6,7 @@ import ( "github.com/rs/zerolog/log" "net/http" "os" + "thuanle.me/ip-info/configs" "thuanle.me/ip-info/configs/key" ) @@ -25,6 +26,9 @@ func StartApiService() { engine.GET("/json", HandleJson) port := os.Getenv(key.EnvApiPort) + if len(port) == 0 { + port = configs.ApiDefaultPort + } srv = &http.Server{ Addr: ":" + port, Handler: engine,