diff --git a/Dockerfile b/Dockerfile index 4e151d3..bb7e53c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,27 @@ -FROM golang:1.23-alpine AS build +FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.23 as builder -WORKDIR /app +ARG TARGETPLATFORM +ARG BUILDPLATFORM +ARG TARGETOS +ARG TARGETARCH -COPY *.go ./ -COPY go.mod go.sum ./ +ENV CGO_ENABLED=0 +ENV GO111MODULE=on -RUN go get -d -v ./... +WORKDIR /go/src/github.com/segadora/iptv-proxy -RUN CGO_ENABLED=0 GOOS=linux go build -o iptv-proxy *.go +COPY go.mod go.mod +COPY go.sum go.sum +RUN go mod download -FROM alpine:3 AS executable +COPY . . -COPY --from=build /app/iptv-proxy / +RUN CGO_ENABLED=${CGO_ENABLED} GOOS=${TARGETOS} GOARCH=${TARGETARCH} -o /usr/bin/iptv-proxy . -RUN apk add curl +FROM --platform=${BUILDPLATFORM:-linux/amd64} gcr.io/distroless/static:nonroot -HEALTHCHECK --interval=5s --timeout=5s --start-period=10s --retries=3 CMD curl --fail http://localhost:1323/health || exit 1 +WORKDIR / +COPY --from=builder /usr/bin/iptv-proxy / +USER nonroot:nonroot -ENTRYPOINT ["/iptv-proxy"] +CMD ["/iptv-proxy"] diff --git a/go.mod b/go.mod index 5b7497a..7be9b57 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/segadora/iptv-proxy -go 1.22.3 +go 1.23.1 require ( github.com/gin-contrib/cors v1.7.2 @@ -8,12 +8,12 @@ require ( github.com/gin-gonic/gin v1.10.0 github.com/jamesnetherton/m3u v0.4.0 github.com/joho/godotenv v1.5.1 - github.com/rs/zerolog v1.32.0 + github.com/rs/zerolog v1.33.0 ) require ( github.com/bytedance/sonic v1.12.3 // indirect - github.com/bytedance/sonic/loader v0.2.0 // indirect + github.com/bytedance/sonic/loader v0.2.1 // indirect github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect github.com/gabriel-vasile/mimetype v1.4.6 // indirect diff --git a/go.sum b/go.sum index 736242d..2bb07b3 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,8 @@ github.com/bytedance/sonic v1.12.3 h1:W2MGa7RCU1QTeYRTPE3+88mVC0yXmsRQRChiyVocVjU= github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= -github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.1 h1:1GgorWTqf12TA8mma4DDSbaQigE2wOgQo7iCjjJv3+E= +github.com/bytedance/sonic/loader v0.2.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= @@ -71,8 +71,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= -github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=