FROM --platform=$BUILDPLATFORM golang:1.27.3-alpine3.23@sha256:5d5113301ffcac84e2bfb20c42648803fecaea6789c89bb9b66884e18cbb30a7 AS builder RUN apk add --update --no-cache ca-certificates make git curl ARG TARGETPLATFORM WORKDIR /src ARG GOPROXY ENV CGO_ENABLED=0 ENV GOCACHE=/go/cache ENV GOMODCACHE=/go/pkg/mod COPY --link go.mod go.sum ./ RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/go/cache \ go mod download -x COPY --link collector/go.mod collector/go.sum ./collector/ RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/go/cache \ go mod download -C ./collector -x ARG VERSION COPY --link . . RUN chmod +x entrypoint.sh RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/go/cache \ go build -C ./collector -ldflags "-X main.version=${VERSION}" -o /usr/local/bin/benthos ./cmd FROM alpine:3.24.3@sha256:be2656061b536c1883c4034790e21d0a09c5aaaf51968b89368a3c0371ea2c9a RUN apk add --update --no-cache ca-certificates tzdata bash SHELL ["/bin/bash", "-c"] # This is so we can reuse presets in development WORKDIR /etc/benthos COPY cloudevents.spec.json /etc/benthos/ COPY collector/benthos/presets /etc/benthos/presets COPY --link --from=builder /usr/local/bin/benthos /usr/local/bin/ COPY --link --from=builder /src/entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh", "/usr/local/bin/benthos"]