ARG DOCKER_GEN_VERSION=main # Build docker-gen from scratch FROM --platform=$BUILDPLATFORM golang:1.27.1-alpine AS go-builder ENV CGO_ENABLED=0 ARG DOCKER_GEN_VERSION TARGETOS TARGETARCH TARGETVARIANT ENV GOOS=$TARGETOS GOARCH=$TARGETARCH VARIANT=$TARGETVARIANT WORKDIR /build # Install the dependencies COPY . . RUN go mod download # Build the docker-gen executable RUN set -eux; \ case "$GOARCH" in \ arm) export GOARM="${VARIANT#v}" ;; \ amd64) export GOAMD64="$VARIANT" ;; \ *) [ -z "$VARIANT" ] ;; \ esac; \ go env | grep -E 'OS=|ARCH=|ARM=|AMD64='; \ go build -ldflags "-X main.buildVersion=${DOCKER_GEN_VERSION}" -o docker-gen ./cmd/docker-gen FROM alpine:3.24.2 ARG DOCKER_GEN_VERSION ENV DOCKER_GEN_VERSION=${DOCKER_GEN_VERSION} \ DOCKER_HOST=unix:///tmp/docker.sock # Install packages required by the image RUN apk add --no-cache --virtual .bin-deps openssl # Copy the entrypoint script COPY /app/docker-entrypoint.sh /app/docker-entrypoint.sh # Install docker-gen from build stage COPY --from=go-builder /build/docker-gen /usr/local/bin/docker-gen # Copy the license COPY LICENSE /usr/local/share/doc/docker-gen/ ENTRYPOINT ["/app/docker-entrypoint.sh"]