前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 Docker 中生成 ProtoBuffer、gRPC 文件

在 Docker 中生成 ProtoBuffer、gRPC 文件

作者头像
饶文津
发布2020-08-05 11:46:17
1.3K0
发布2020-08-05 11:46:17
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏

使用 znly/protoc 这个镜像来在docker中生成 protobuffer 和 grpc 文件。

Python 语言版

基本用法:

代码语言:javascript
复制
docker run --rm  --user `id -u ${USER}` -v `pwd`:`pwd` -w `pwd` znly/protoc \
  	--plugin=protoc-gen-grpc=/usr/bin/grpc_python_plugin \
  	--python_out=生成的pb文件路径 --grpc_out=生成的grpc的pb文件路径 \
  	-I路径 pb文件名

假设我们的项目结构长这样:

代码语言:javascript
复制
api/v1/my_server.proto 放置.pb文件
client/ 放置生成的pb文件,如 xx_pb2.py, xx_pb2_grpc.py
Makefile

首先编辑 Makefile:

代码语言:javascript
复制
client/my_server_pb2.py client/my_server_pb2_grpc.py: api/v1/my_server.proto
	@docker run --rm  --user `id -u ${USER}` -v `pwd`:`pwd` -w `pwd` znly/protoc \
  	--plugin=protoc-gen-grpc=/usr/bin/grpc_python_plugin \
  	--python_out=client --grpc_out=client \
  	-Iapi/v1 my_server.pb

compile-proto: client/my_server_pb2.py client/my_server_pb2_grpc.py

注意 @ 是在调用 make 命令时不输出当前指令。

接下来,我们在命令行执行 make compile-proto 就可以了。


Go 语言版

.pb.go 文件

如果说我们想直接生成 .pb.go 文件到proto文件同一个目录下,可以这样写:

代码语言:javascript
复制
api/v1/my_server.pb.go: api/v1/my_server.proto
	@docker run --rm --user `id -u ${USER}` -v `pwd`:`pwd` -w `pwd` znly/protoc -I. \
        --go_out=plugins=grpc:. api/v1/my_server.proto

pb 文件

如果说我们要生成一个 .pb 文件到 client 目录下:

代码语言:javascript
复制
client/my_server.pb: api/v1/my_server.proto
	@docker run --rm --user `id -u ${USER}` -v `pwd`:`pwd` -w `pwd` znly/protoc -I. \
	--include_imports --include_source_info \
	--descriptor_set_out=client/my_server.pb \
	--go_out=plugins=grpc:. api/v1/my_server.proto
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python 语言版
  • Go 语言版
    • .pb.go 文件
      • pb 文件
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档