zoukankan      html  css  js  c++  java
  • 在 Docker 中生成 ProtoBuffer、gRPC 文件

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

    Python 语言版

    基本用法:

    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文件名
    

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

    api/v1/my_server.proto 放置.pb文件
    client/ 放置生成的pb文件,如 xx_pb2.py, xx_pb2_grpc.py
    Makefile
    

    首先编辑 Makefile:

    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文件同一个目录下,可以这样写:

    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 目录下:

    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
    
  • 相关阅读:
    springboot属性类自动加载配置文件中的值
    mysql修改root密码
    idea各种图标说明
    nginx安装配置
    notepad++下载32位,安装插件管理
    crontab 定时执行脚本出错,但手动执行脚本正常
    jenkins安装配置
    VirtualBox从USB设备(PE)启动图文教程
    如何卸载windows的服务?卸载服务?
    在Windows的CMD中如何设置支持UTF8编码?
  • 原文地址:https://www.cnblogs.com/flipped/p/13435682.html
Copyright © 2011-2022 走看看