37 lines
1 KiB
Text
37 lines
1 KiB
Text
|
|
# 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"]
|