docker-gen Docker & Self-Hosted Deployment

GitHub

Generate files from docker container meta-data

4,626 stars Go Go 1 file ยท ~5,153 tokens #docker#go
1. Pull Image (DOCKERHUB) docker pull nginx-proxy/docker-gen:latest
2. Docker Run (1-Click Launch) docker run -d --name docker-gen --restart always nginx-proxy/docker-gen:latest
3. Podman Run podman run -d --name docker-gen --restart always nginx-proxy/docker-gen:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/nginx-proxy/docker-gen:latest
5. ORAS Pull (OCI Artifact) oras pull nginx-proxy/docker-gen:latest
Dockerfile.alpine
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"]