build: bootstrap Go toolchain and generated APIs
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
FROM golang:1.27.0-bookworm AS build
|
||||
|
||||
WORKDIR /src
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/rvbox-server ./cmd/rvbox-server \
|
||||
&& CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/rvc ./cmd/rvc
|
||||
|
||||
FROM alpine:3.22.1
|
||||
|
||||
RUN apk add --no-cache ca-certificates \
|
||||
&& addgroup -S -g 65532 rvbox \
|
||||
&& adduser -S -D -H -u 65532 -G rvbox rvbox
|
||||
COPY --from=build /out/rvbox-server /usr/local/bin/rvbox-server
|
||||
COPY --from=build /out/rvc /usr/local/bin/rvc
|
||||
USER 65532:65532
|
||||
ENTRYPOINT ["/usr/local/bin/rvbox-server"]
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
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
|
||||
@@ -0,0 +1,5 @@
|
||||
services:
|
||||
toolchain:
|
||||
environment:
|
||||
RVBOX_TEST_RUN_ID: "${RVBOX_TEST_RUN_ID:?set by scripts/test-env}"
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
name: rvbox-dev
|
||||
|
||||
services:
|
||||
toolchain:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: deploy/Dockerfile.toolchain
|
||||
working_dir: /workspace
|
||||
user: "${RVBOX_UID:-1001}:${RVBOX_GID:-1001}"
|
||||
environment:
|
||||
IN_TOOLCHAIN: "1"
|
||||
GOCACHE: /cache/go-build
|
||||
GOMODCACHE: /cache/go/pkg/mod
|
||||
GOPATH: /cache/go
|
||||
HOME: /tmp
|
||||
XDG_CACHE_HOME: /cache/xdg
|
||||
volumes:
|
||||
- ..:/workspace
|
||||
- rvbox-go-build:/cache/go-build
|
||||
- rvbox-go-mod:/cache/go/pkg/mod
|
||||
|
||||
volumes:
|
||||
rvbox-go-build:
|
||||
rvbox-go-mod:
|
||||
Reference in New Issue
Block a user