Skip to content

Instantly share code, notes, and snippets.

@vapopov
Created July 11, 2023 10:33
Show Gist options
  • Save vapopov/1afc6e2076b6b19c72200cc47a5681d0 to your computer and use it in GitHub Desktop.
Save vapopov/1afc6e2076b6b19c72200cc47a5681d0 to your computer and use it in GitHub Desktop.
protoc
FROM gcr.io/bazel-public/bazel as bazel-builder
#ENV GO111MODULE on
#RUN apk update && apk add git curl build-base libtool
ENV PROTOBUF_URL https://github.com/google/protobuf/releases/download/v23.3/protobuf-23.3.tar.gz
RUN curl -L -o /tmp/protobuf.tar.gz $PROTOBUF_URL
WORKDIR /tmp/
RUN tar xvzf protobuf.tar.gz
WORKDIR /tmp/protobuf-23.3
RUN cd /tmp/protobuf-23.3 && \
bazel build :protoc :protobuf
RUN mkdir -p /tmp/export/lib64 && \
mkdir -p /tmp/export/usr/local/bin && \
mkdir -p /tmp/export/usr/local/include && \
mkdir -p /tmp/export/lib/x86_64-linux-gnu/ && \
cp /tmp/protobuf-23.3/bazel-bin/protoc /tmp/export/usr/local/bin/ && \
cp -R /tmp/protobuf-23.3/src/* /tmp/export/usr/local/include/ && \
cp /lib64/* /tmp/export/lib64/ && \
cp /lib/x86_64-linux-gnu/ld-2.31.so /tmp/export/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libpthread.so.0 /tmp/export/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libm.so.6 /tmp/export/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libstdc++.so.6 /tmp/export/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libgcc_s.so.1 /tmp/export/lib/x86_64-linux-gnu/ && \
cp /lib/x86_64-linux-gnu/libc.so.6 /tmp/export/lib/x86_64-linux-gnu/
FROM golang:alpine as go-builder
# Install protoc-gen-go
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.31.0 && \
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0 && \
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.16.0 && \
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.16.0 && \
go install github.com/mwitkow/go-proto-validators/protoc-gen-govalidators@v0.3.2 && \
go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@v1.5.1 && \
go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.12.4
RUN mkdir -p /usr/local/include && \
tree /go/pkg/mod/github.com/grpc-ecosystem/
# cp -R /go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v2.16.0/third_party /usr/local/include/
# cp -R /go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.11.1/protoc-gen-swagger /usr/local/include/
RUN mkdir -p /tmp/export/bin && \
mkdir -p /tmp/export/lib && \
cp /go/bin/* /tmp/export/bin/
FROM alpine:3.18.0
ENV GOPATH /go
RUN apk --no-cache add ca-certificates make
RUN mkdir /go
WORKDIR /go
COPY --from=bazel-builder /tmp/export /
COPY --from=go-builder /tmp/export /usr
COPY --from=go-builder /usr/local/include /usr/local/include
CMD ["protoc"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment