Files
rvbox/deploy/Dockerfile.toolchain
T

41 lines
1.7 KiB
Docker

ARG BUF_VERSION=1.72.0
FROM bufbuild/buf:${BUF_VERSION} AS buf
FROM golang:1.27.0-bookworm
ARG PROTOC_VERSION=35.0
ARG PROTOC_AMD64_SHA256=a45cda0989c17dd950db55f6fbe1e5814c50fda08e87aa422980ac1f89dddbbc
ARG PROTOC_ARM64_SHA256=36b518ac14d90351cc6598228ed2bbe5afe4e357b1af470b07e0ec1609875de2
ARG PROTOC_GEN_GO_VERSION=1.36.12
ARG PROTOC_GEN_GO_GRPC_VERSION=1.6.2
ARG TARGETARCH
ENV GOCACHE=/cache/go-build \
GOMODCACHE=/cache/go/pkg/mod \
GOPATH=/cache/go \
PATH=/cache/go/bin:/usr/local/go/bin:/usr/local/bin:/usr/bin:/bin
COPY --from=buf /usr/local/bin/buf /usr/local/bin/buf
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates curl git make unzip \
&& rm -rf /var/lib/apt/lists/* \
&& case "${TARGETARCH}" in \
amd64) protoc_arch=x86_64; protoc_sha="${PROTOC_AMD64_SHA256}" ;; \
arm64) protoc_arch=aarch_64; protoc_sha="${PROTOC_ARM64_SHA256}" ;; \
*) echo "unsupported toolchain architecture: ${TARGETARCH}" >&2; exit 1 ;; \
esac \
&& curl -fsSLo /tmp/protoc.zip \
"https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-${protoc_arch}.zip" \
&& echo "${protoc_sha} /tmp/protoc.zip" | sha256sum -c - \
&& unzip -q /tmp/protoc.zip -d /usr/local \
&& rm /tmp/protoc.zip
RUN GOBIN=/usr/local/bin go install "google.golang.org/protobuf/cmd/protoc-gen-go@v${PROTOC_GEN_GO_VERSION}" \
&& GOBIN=/usr/local/bin go install "google.golang.org/grpc/cmd/protoc-gen-go-grpc@v${PROTOC_GEN_GO_GRPC_VERSION}"
RUN mkdir -p /cache/go-build /cache/go/pkg/mod /cache/xdg /workspace \
&& chown -R 1001:1001 /cache /workspace
WORKDIR /workspace