# syntax=docker/dockerfile:1 ARG BINARY ARG TARGETARCH # ========================== # Stage: minimal # ========================== FROM debian:12-slim AS minimal ARG TARGETARCH ARG BINARY RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends \ binutils \ curl \ xz-utils \ ca-certificates; \ rm -rf /var/lib/apt/lists/*; \ \ case "${TARGETARCH}" in \ amd64) UPX_ARCH="amd64" ;; \ arm64) UPX_ARCH="arm64" ;; \ *) echo "Unsupported TARGETARCH: ${TARGETARCH}" >&2; exit 1 ;; \ esac; \ \ curl -fL \ --retry 5 \ --retry-delay 3 \ --connect-timeout 10 \ --max-time 120 \ -o /tmp/upx.tar.xz \ "https://github.com/telemt/telemt/releases/download/toolchains/upx-${UPX_ARCH}_linux.tar.xz"; \ \ tar -xf /tmp/upx.tar.xz -C /tmp; \ install -m 0755 /tmp/upx*/upx /usr/local/bin/upx; \ rm -rf /tmp/upx* COPY ${BINARY} /telemt RUN set -eux; \ test -f /telemt; \ strip --strip-unneeded /telemt || true; \ upx --best --lzma /telemt || true # ========================== # Debug image # ========================== FROM debian:12-slim AS debug RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends \ ca-certificates \ tzdata \ curl \ iproute2 \ busybox; \ rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=minimal /telemt /app/telemt COPY config.toml /app/config.toml EXPOSE 443 9090 9091 ENTRYPOINT ["/app/telemt"] CMD ["config.toml"] # ========================== # Production (distroless, for static MUSL binary) # ========================== FROM gcr.io/distroless/static-debian12 AS prod WORKDIR /app COPY --from=minimal /telemt /app/telemt COPY config.toml /app/config.toml USER nonroot:nonroot EXPOSE 443 9090 9091 ENTRYPOINT ["/app/telemt"] CMD ["config.toml"]