Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >在 Docker 中生成 ProtoBuffer、gRPC 文件

在 Docker 中生成 ProtoBuffer、gRPC 文件

作者头像
饶文津
发布于 2020-08-05 03:46:17
发布于 2020-08-05 03:46:17
1.5K00
代码可运行
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏
运行总次数:0
代码可运行

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

Python 语言版

基本用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
api/v1/my_server.proto 放置.pb文件
client/ 放置生成的pb文件,如 xx_pb2.py, xx_pb2_grpc.py
Makefile

首先编辑 Makefile:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Cpp(九) gRPC protobuf for C++ 基本使用
Mac: https://github.com/Coxhuang/FKCpp/tree/master/gRPCDemo/macOS
Autooooooo
2021/02/02
5.8K0
Docker部署完整的PHP-RPC-Golang环境
我们用PHP的Laravel框架来实现一个用户登录的Restful Api,地址为:
anakinsun
2019/06/11
2.1K1
gRPC,爆赞
gRPC 这项技术真是太棒了,接口约束严格,性能还高,在 k8s 和很多微服务框架中都有应用。
AlwaysBeta
2021/10/12
1.2K0
Go gRPC Hello World
开始 gRPC 了,这篇文章学习使用 gRPC,输出一个 Hello World。
新亮
2019/08/01
4830
Golang 语言 gRPC 服务怎么同时支持 gRPC 和 HTTP 客户端调用?
关于 gRPC 的文章,我们之前写过几篇,如果读者朋友还对 gRPC 不了解,我建议您可以翻阅一下公众号的历史文章。
frank.
2022/03/31
5.4K0
Golang 语言 gRPC 服务怎么同时支持 gRPC 和 HTTP 客户端调用?
go-protobuf, go-grpc-gateway和代码生成
代码生成是一种常用的生产效率技术。广义上看,编译器通过高级语言生产出低级语言或者机器码,也可以理解为一种代码生成。这种技术在现代的工程实践里往往比较常见:IDE通常自带了一些常见的单元测试生成工具;根据特定的snippet可以生成比较常用的代码片段;在go语言中,由于目前缺乏对范型对支持,为了节约重复代码,通常实现了类似技术也是使用代码生成。
王磊-字节跳动
2019/07/28
3.2K0
【gRPC】ProtoBuf 语言快速学习指南
继上篇【gRPC】 在.Net core中使用gRPC了解了gRPC的使用,gRPC基于HTTP/2和ProtoBuf,ProtoBuf就非常有必要好好了解一下了,
DDGarfield
2022/06/23
5580
gRPC及gRPC-Web
官方指南 由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。
matt
2022/10/25
2.8K0
gRPC及gRPC-Web
API 网关 gRPC-Gateway V2 初探
我们都知道 gRPC 并不是万能的工具。在某些情况下,我们仍然想提供传统的 HTTP/JSON API。原因可能从保持向后兼容性到支持编程语言或 gRPC 无法很好地支持的客户端。但是仅仅为了公开 HTTP/JSON API 而编写另一个服务是一项非常耗时且乏味的任务。
我是阳明
2021/04/09
2.5K0
API 网关 gRPC-Gateway V2 初探
Go语言,gRPC 的使用了解--上
$ go get -u google.golang.org/grpc@v1.29.1
微客鸟窝
2021/11/19
9090
Go语言,gRPC 的使用了解--上
gRPC 使用 protobuf 构建微服务
以前使用 Laravel 做 web 项目时,是根据 MVC 去划分目录结构的,即 Controller 层处理业务逻辑,Model 层处理数据库的 CURD,View 层处理数据渲染与页面交互。以及 MVP、MVVM 都是将整个项目的代码是集中在一个代码库中,进行业务处理。这种单一聚合代码的方式在前期实现业务的速度很快,但在后期会暴露很多问题:
aoho求索
2019/05/17
2.2K0
gRPC 使用 protobuf 构建微服务
grpc使用一览子
然后,要用protobuf把它编译成对应的语言代码。 首先安装protoc,偷个懒,别人早就编译好了。直接用就行。
超级大猪
2019/11/21
7180
基于google protobuf的gRPC实现
Protobuf(Google Protocol Buffers)提供一种灵活、高效、自动化的机制,用于序列化结构数据。Protobuf仅需自定义一次所需要的数据格式,然后我们就可以使用Protobuf编译器自动生成各种语言的源码,方便我们读写自定义的格式化数据。另外Protobuf的使用与平台和语言无关,可以在不破坏原数据格式的基础上,扩展新的数据。
小一
2019/08/14
1.4K0
基于google protobuf的gRPC实现
小白零基础--gRPC整合Kubernetes
上一篇,我们简单介绍了下mac下单节点Kubernetes的安装,今天我们乘热打铁,感受下grpc整合Kubernetes的魅力。好了Talk is cheap,Show me the graph 我们要做的是下面这么一个架构的小demo。
用户3904122
2022/06/29
1.3K1
小白零基础--gRPC整合Kubernetes
学习gRPC - 2.如何构建一个流和序列化
流数据有各种各样的场景用法。一种是,当事件发生时,有一种方法可以不断发出描述事件的消息。例如,当数据被添加到数据库中时,数据库希望将“数据添加”事件通知相关方。或者当股票价格发生变化时,证券交易所希望向订阅“价格变化”事件的所有服务公布新价格。
叉叉敌
2021/12/06
9770
学习gRPC - 2.如何构建一个流和序列化
Golang笔记 6.3 RPC 编程之 gRPC
先了解几个基本概念,https://grpc.io/docs/guides/concepts/
twowinter
2020/04/17
1.5K0
【C++】开源:grpc远程过程调用(RPC)配置与使用
中文文档:https://doc.oschina.net/grpc?t=57966
DevFrank
2024/07/24
4060
gRPC学习之三:初试GO版gRPC开发
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos gRPC学习系列文章链接 在CentOS7部署和设置GO GO的gRPC开发环境准备 初试GO版gRPC开发 实战四类服务方法 gRPC-Gateway实战 gRPC-Gateway集成swagger 本篇概览 本文《gRPC学习》系列的第三篇,前文已准备好gRPC开发环境,今天一起来开发一个服务端应用以及远程gRPC调用它的客户端; 今天实战的内容和步骤如
程序员欣宸
2022/05/06
2410
gRPC学习之三:初试GO版gRPC开发
go grpc 初步笔记
像许多RPC系统一样,gRPC基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。
solate
2019/07/22
6290
gRPC如何在Golang和PHP中进行实战?7步教你上手!
导语 | gRPC也是RPC技术家族的一种,它由Google主导开发,是一个跨平台的调用框架,其中和go语言结合的是最紧密的,在go语言的开发和调用中占据主导地位。gRPC采用protobuf作为配置载体来实现通讯和调用。本文主要实战演示一下gRPC的几种调用通讯模式(普通、客户端流、服务端流、双向流)以及和PHP客户端的联通调用。 在学习gRPC之前,我们需要了解一下ptorobuf语法和protoc的命令,能帮助我们更加深入的学习和理解gRPC。 一、需求分析 我们这次只搞个很简单的需求,搞个用户
腾讯云开发者
2021/10/20
2.9K1
相关推荐
Cpp(九) gRPC protobuf for C++ 基本使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验