# syntax=docker/dockerfile:1.7 FROM golang:1.26-alpine AS builder WORKDIR /src RUN apk add --no-cache ca-certificates tzdata COPY go.mod go.sum ./ RUN go mod download COPY . . ARG TARGETOS ARG TARGETARCH RUN XTEVE_VERSION="$(grep -m1 '^#### ' changelog-beta.md | cut -d' ' -f2 | sed 's/-beta$//')" \ && test -n "$XTEVE_VERSION" \ && CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH \ go build -trimpath -ldflags="-s -w -X main.Version=$XTEVE_VERSION" -o /out/xteve ./xteve.go FROM mwader/static-ffmpeg:latest AS ffmpeg FROM alpine:3.23 RUN apk add --no-cache ca-certificates tzdata \ && addgroup -S xteve \ && adduser -S -G xteve xteve \ && mkdir -p /xteve/config \ && chown -R xteve:xteve /xteve WORKDIR /xteve COPY --from=builder /out/xteve /usr/local/bin/xteve COPY --from=ffmpeg /ffmpeg /usr/local/bin/ffmpeg COPY --from=ffmpeg /ffprobe /usr/local/bin/ffprobe COPY docker/entrypoint.sh /usr/local/bin/docker-entrypoint.sh USER xteve EXPOSE 34400/tcp VOLUME ["/xteve/config"] ENV XTEVE_CONFIG=/xteve/config ENV XTEVE_PORT=34400 HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \ CMD wget -qO- "http://127.0.0.1:${XTEVE_PORT}/lineup_status.json" > /dev/null || exit 1 ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]