diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3ba0631 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM golang:1.25-alpine AS iptv-img-builder +ARG GOOS +ARG GOARCH +ARG IPTVC_VERSION +ENV CGO_ENABLED=0 +ENV GOOS=${GOOS:-linux} +ENV GOARCH=${GOARCH:-amd64} +COPY go.mod go.sum ./ +RUN go mod download +COPY . . +RUN go build \ + -trimpath \ + -ldflags="-s -w -X main.version=${IPTVC_VERSION}" \ + -o /app/iptvc \ + . + +FROM alpine:3.22.2 AS iptv-img-checker +LABEL org.opencontainers.image.authors="Anthony Axenov " +WORKDIR /app +RUN apk add --no-cache ca-certificates tzdata +RUN addgroup -S iptvc-user && adduser -S -G iptvc-user -H -s /sbin/nologin iptvc-user +COPY --from=iptv-img-builder --chown=iptvc-user:iptvc-user /app/iptvc /app/iptvc +USER iptvc-user +ENTRYPOINT ["/app/iptvc"] diff --git a/build-docker-image.sh b/build-docker-image.sh new file mode 100755 index 0000000..7bc07b2 --- /dev/null +++ b/build-docker-image.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +[[ "$1" ]] && DOCKER_TAG="$1" || DOCKER_TAG="latest" +[[ "$1" ]] && GIT_TAG="$1" || GIT_TAG=$(git describe --tags --always) +GIT_HASH=$(git rev-parse --short HEAD) +IPTVC_VERSION="${GIT_TAG}-${GIT_HASH}" + +git checkout "${GIT_TAG}" 2>/dev/null +docker build \ + --build-arg IPTVC_VERSION="${IPTVC_VERSION}" \ + --tag iptvc:"${DOCKER_TAG}" \ + --tag git.axenov.dev/iptv/iptvc:"${DOCKER_TAG}" \ + . + +docker push git.axenov.dev/iptv/iptvc:"${DOCKER_TAG}"