staging
Some checks failed
release-tag / release-image (push) Failing after 1m2s

This commit is contained in:
2025-09-21 14:58:13 +02:00
parent 536dd3d416
commit 42e484c47c
12 changed files with 566 additions and 1 deletions

34
Dockerfile Normal file
View File

@@ -0,0 +1,34 @@
# ---------- Build Stage ----------
FROM golang:1.22-alpine AS build
WORKDIR /src
# SystemDeps nur für Build
RUN apk add --no-cache git ca-certificates tzdata && update-ca-certificates
# Module separat cachen
COPY go.mod go.sum ./
RUN go mod download
# Quellcode
COPY . .
# statisch bauen (kein CGO), mit kleinen Binaries
ENV CGO_ENABLED=0
RUN --mount=type=cache,target=/root/.cache/go-build \
go build -trimpath -ldflags="-s -w" -o /out/dashboard ./cmd/dashboard
# ---------- Runtime Stage ----------
# Distroless ist sehr klein/sicher; enthält CAZertifikate für HTTPSCalls
FROM gcr.io/distroless/base-debian12:nonroot
WORKDIR /app
# Expose Port
EXPOSE 8080
# Copy Binary + benötigte Zeitzonen/Certs sind in Distroless bereits enthalten
COPY --from=build /out/dashboard /app/dashboard
# Security: läuft als nonroot User (Distroless nonroot UID 65532)
USER nonroot:nonroot
# Healthcheck via Startkommando ist nicht möglich in Distroless per Compose lösen
ENTRYPOINT ["/app/dashboard"]