go语言的grpc环境安装
本文直接用安装包的方式安装。
源码编译安装参考:https://www.cnblogs.com/abc36725612/p/14288333.html
环境
golang的docker image
docker run -it golang:alpine
go语言的grpc环境安装
参考官方grpc-go文档:https://grpc.io/docs/languages/go/quickstart/
- 添加go依赖包的代理
# go env -w GO111MODULE=on
//重要:添加代理,参考:https://goproxy.cn/
# go env -w GOPROXY=https://goproxy.cn,direct
- 安装protobuf
# apk add protobuf
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
(1/7) Installing libgcc (9.3.0-r2)
(2/7) Installing libstdc++ (9.3.0-r2)
(3/7) Installing libprotobuf (3.12.2-r0)
(4/7) Installing libprotoc (3.12.2-r0)
(5/7) Installing protoc (3.12.2-r0)
(6/7) Installing libprotobuf-lite (3.12.2-r0)
(7/7) Installing protobuf (3.12.2-r0)
Executing busybox-1.31.1-r19.trigger
OK: 13 MiB in 22 packages
//查看版本
# protoc --version
libprotoc 3.12.2
- 安装protoc-gen-go插件
# go get google.golang.org/protobuf/cmd/protoc-gen-go
- 安装grcp-go
# go get google.golang.org/grpc/cmd/protoc-gen-go-grpc
- 修改PATH,使得protoc 编译器能找到protoc-gen-go插件
export PATH="$PATH:$(go env GOPATH)/bin"
环境安装完成!
验证
下载示例代码:https://github.com/grpc/grpc-go
服务端启动
$ docker ps | grep golang
f37f662a3f54 golang "/bin/sh" 14 minutes ago Up 14 minutes ecstatic_lamport
$ docker exec -it f37f662a3f54 sh
# cd /grpc-go/examples/helloworld/
helloworld # ls
greeter_client greeter_server helloworld
helloworld # go run greeter_server/main.go
go: downloading github.com/golang/protobuf v1.4.2
go: downloading google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98
go: downloading golang.org/x/net v0.0.0-20190311183353-d8887717615a
go: downloading golang.org/x/text v0.3.0
2021/01/16 11:41:50 Received: world
客户端启动
$ docker ps | grep golang
f37f662a3f54 golang "/bin/sh" 14 minutes ago Up 14 minutes ecstatic_lamport
$ docker exec -it f37f662a3f54 sh
# cd /grpc-go/examples/helloworld/
helloworld # ls
greeter_client greeter_server helloworld
helloworld # go run greeter_client/main.go
2021/01/16 11:41:50 Greeting: Hello world
测试成功!