# ── 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"]
