Four example Dockerfiles named golang:1.25 while go.mod requires 1.26; the control plane's image takes GO_BASE from the manifest and these did not, so a build that could not fetch a newer toolchain failed at go mod download (found running the lab through the mesh).
18 lines
742 B
Docker
18 lines
742 B
Docker
# The route proxy, as a module ships one.
|
|
#
|
|
# Static and FROM scratch like the control plane's image, and for the same reason: it is fetched
|
|
# by digest and run on a machine, so everything in it is something a person would have to audit.
|
|
# The Go it builds with is the one the manifest pins (build.on GO_BASE), passed by the Makefile and the
|
|
# build machine alike; the default only serves a hand build, and matches go.mod.
|
|
ARG GO_BASE=golang:1.26-alpine
|
|
FROM ${GO_BASE} AS build
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
RUN CGO_ENABLED=0 go build -trimpath -ldflags '-s -w' -o /mesh-route-proxy ./examples/route-proxy
|
|
|
|
FROM scratch
|
|
COPY --from=build /mesh-route-proxy /mesh-route-proxy
|
|
ENTRYPOINT ["/mesh-route-proxy"]
|