# syntax=docker/dockerfile:1.7 # ---------- build ---------- FROM golang:1.23-alpine3.21 AS build ENV CGO_ENABLED=0 \ GOOS=linux \ GOFLAGS="-trimpath" WORKDIR /src COPY services/dummy-sink/go.mod ./services/dummy-sink/ RUN --mount=type=cache,target=/root/.cache/go-build \ --mount=type=cache,target=/go/pkg/mod \ cd services/dummy-sink && go mod download COPY services/dummy-sink/ ./services/dummy-sink/ WORKDIR /src/services/dummy-sink RUN --mount=type=cache,target=/root/.cache/go-build \ --mount=type=cache,target=/go/pkg/mod \ go vet ./... && \ go test ./... && \ go build -ldflags="-s -w" -o /out/dummy-sink ./cmd/dummy-sink # ---------- runtime ---------- # Distroless static+nonroot. The projected ServiceAccount token lives on a # tmpfs volume mounted by kubelet into /var/run/secrets/tokens/trust-api, # and /data/dummy-sink is a PVC mount — the container needs no shell. FROM gcr.io/distroless/static-debian12:nonroot COPY --from=build /out/dummy-sink /dummy-sink USER 65532:65532 EXPOSE 8083 ENTRYPOINT ["/dummy-sink"]