41 lines
1.3 KiB
Docker
41 lines
1.3 KiB
Docker
# Builder pin and go.mod directive are the same patch release deliberately;
|
|
# an older builder reports the mismatch only after downloading the module graph.
|
|
ARG GO_VERSION=1.27.1
|
|
|
|
FROM docker.io/library/golang:${GO_VERSION}-alpine AS build
|
|
|
|
# Git supplies Go's VCS build information; only /out/logwisp crosses stages.
|
|
RUN apk add --no-cache git
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
|
|
ARG TARGETOS=linux
|
|
ARG TARGETARCH=amd64
|
|
ARG VERSION=dev
|
|
ARG REVISION=unknown
|
|
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
|
|
go build -trimpath \
|
|
-ldflags="-s -w -X logwisp/internal/version.Version=${VERSION} -X logwisp/internal/version.GitCommit=${REVISION}" \
|
|
-o /out/logwisp ./cmd/logwisp
|
|
|
|
FROM scratch
|
|
|
|
ARG VERSION=dev
|
|
ARG REVISION=unknown
|
|
|
|
LABEL org.opencontainers.image.title="logwisp" \
|
|
org.opencontainers.image.description="Log transport: sources, flow, sinks" \
|
|
org.opencontainers.image.source="https://github.com/lixenwraith/logwisp" \
|
|
org.opencontainers.image.revision="${REVISION}" \
|
|
org.opencontainers.image.version="${VERSION}" \
|
|
org.opencontainers.image.licenses="BSD-3-Clause"
|
|
|
|
COPY --from=build /out/logwisp /logwisp
|
|
|
|
# Numeric identity is required in scratch and satisfies a restricted pod spec.
|
|
USER 65532:65532
|
|
|
|
ENTRYPOINT ["/logwisp"]
|