【发布时间】:2021-02-25 14:58:46
【问题描述】:
使用官方的golang docker镜像,我可以使用protoc命令生成x.pb.go和x_grpc.pb.go文件。问题是它使用的是最新版本,而我想使用 go.mod 文件中的任何一个版本来生成这些版本。
我尝试从golang 图像开始,然后获取我的项目的go.mod 文件,获取依赖项并尝试从那里生成。这是我的 dockerfile:
FROM golang:1.15
WORKDIR /app
RUN apt-get update
RUN apt install -y protobuf-compiler
COPY go.* .
RUN go mod download
RUN go get all
RUN export PATH="$PATH:$(go env GOPATH)/bin"
RUN mkdir /api
然后我尝试将.proto文件的卷和/pb文件夹绑定输出,并再次使用protoc命令(我现在直接从docker尝试)。像这样的:
protoc --proto_path=/api --go_out=/pb --go-grpc_out=/pb /api/x.proto
我收到了这个错误:
protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1.
我的go.sum文件里面有google.golang.org/protobuf v1.25.0,怎么找不到呢?
【问题讨论】:
-
您是否尝试按照文档here 中的说明在Dockerfile 中执行命令
go install google.golang.org/protobuf/cmd/protoc-gen-go
标签: docker go protocol-buffers grpc protoc