18 lines
864 B
Docker
18 lines
864 B
Docker
# ── 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"]
|