相信每個人在裝gRPC Protoc,可能都要花一些時間,還可能要處理一些環境問題,那就讓我們就把他封裝成容易讓大家用docker run起來build就好了!
Builder: 做一個image可以直接透過docker啟動container去幫你build proto檔案,使用者就不用再安裝proto+gprc了,只需要有裝docker就可以build proto檔案。
先查看gRPC官網安裝說明
https://grpc.io/docs/protoc-installation/
建立 proto-builder.dockerfile
gRPC Builder Dockerfile
FROM golang:1.14
RUN apt-get update && apt-get install unzip -y
RUN wget -q -O protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v3.12.0/protoc-3.12.0-linux-x86_64.zip && unzip protoc.zip
RUN mv /go/bin/protoc /usr/local/bin/protoc && rm protoc.zip
ENV GO111MODULE=on
RUN go get github.com/golang/protobuf/protoc-gen-go
ENV PATH="$PATH:$(go env GOPATH)/bin"
WORKDIR /go/src/app
docker build --no-cache --pull --force-rm -t rain123473/proto-builder:g1.14-p3.12.0 -f proto-builder.dockerfile .
之後看讀者們決定要把該image是要推到你們的私倉還是公倉?
gRPC proto file
example: ithome.proto
syntax = "proto3";
package ithome;
option go_package = "./;ithome";
service HelloService {
rpc SayHello (HelloRequest) returns (HelloResponse);
}
message HelloRequest {
string greeting = 1;
double mail_count_default = 2;
}
message HelloResponse {
string reply = 1;
}
在proto檔案目錄下執行builder
docker run -v $(pwd):/go/src/app -w /go/src/app rain123473/proto-builder:g1.14-p3.12.0 sh -c 'protoc *.proto --go_out=plugins=grpc:.;'
就可以看到.pb.go檔案被build出來囉!
這樣可以讓大家的builder版本一致以及不用再花費時間在安裝protoc的流程上
明天會教大家利用該方式將builder導入自動化流程內。敬請期待唷!