问题描述
名为 golang:1.15
的 docker 镜像包含我使用 protoc 生成 grpc 代码所需的一切。唯一的问题是我希望输出稳定,通过固定几个包的版本(protoc-gen-go
、protoc-gen-go-grpc
、grpc
、protobuf
)。
这是我的 Dockerfile
FROM golang:1.15
workdir /app
RUN export GO111MODULE=on # Enable module mode
RUN go mod init id
RUN go get google.golang.org/protobuf/cmd/protoc-gen-go@v1.25.0
RUN go get google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0
RUN go get google.golang.org/grpc@v1.35.0
RUN go get github.com/golang/protobuf@v1.4.3
RUN export PATH="$PATH:$(go env GOPATH)/bin"
docker run -v "$$(pwd):/app" -v "$$(pwd)/pb:/pb" apigen protoc --go_out=../pb --go_opt=paths=source_relative --go-grpc_out=../pb --go-grpc_opt=paths=source_relative ./myproto.proto
这可以生成代码,但是在顶部 // protoc-gen-go v1.25.0-devel
这不是我问的版本。
我尝试更改 RUN go get .../protoc-gen-go@v1.25.0
以获得 v1.24.0
,但它仍然在文件中显示相同的输出,这意味着它根本不使用我的模块,并且必须使用来自golang
图像。
如何覆盖图像中的内容以固定版本?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)