# ── Stage 1: Kompilieren ───────────────────────────────────────────────────── FROM golang:1.24-alpine AS builder WORKDIR /build COPY main.go go.mod ./ # go mod tidy lädt Abhängigkeiten und erzeugt go.sum im Build-Layer # CGO_ENABLED=0 → statisch gelinktes Binary, keine libc-Abhängigkeit RUN go mod tidy \ && CGO_ENABLED=0 GOOS=linux \ go build -ldflags="-s -w" -o visitcounter . # ── Stage 2: Minimales Laufzeit-Image ──────────────────────────────────────── FROM scratch # scratch = leeres Image ohne OS – das Binary läuft direkt auf dem Kernel COPY --from=builder /build/visitcounter /visitcounter EXPOSE 8080 USER 65534 ENTRYPOINT ["/visitcounter"]