docker+centos 7構築.protoファイルからjsonファイルへ


dockerのインストール
https://www.docker.com/get-started
dockerインストールcentos 7ミラー
docker pull centos:7
docker run -d -t -i -p 8080:80 --name=centos_protoc  centos:7

#  centos_protoc  ID,     
docker  ps
docker exec -it <container_id> bash

### protoc   3+    
wget https://github.com/google/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.tar.gz
tar zxvf protobuf-all-3.6.1.tar.gz

yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++

./autogen.sh
./configure
make
make install

centos 7 golangバージョンのインストール
//     
wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz
tar -C /usr/local -vxzf go1.13.linux-amd64.tar.gz
//       
vi ~/.bash_profile
export PATH=$PATH:/usr/local/go/bin
source ~/.bash_profile
go version
//     
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct




go protoc-gen-docのインストール
go get -u github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc

//      /root/go/src/github.com/pseudomuto/protoc-gen-doc
   cmd   protoc-gen-doc        `go build -o protoc-gen-doc -a `   protoc-gen-doc  

vi ~/.bash_profile
export PATH=$PATH:/usr/local/go/bin:/usr/bin/protoc-gen-doc

source ~/.bash_profile



テスト
新しいmap.proto
syntax = "proto3";

package xd.tds.gameConsole;

service Map {
     
  rpc getMapDetail(GetMapDetailRequest) returns(GetMapDetailResponse) {
     
  }
}

message GetMapDetailRequest {
     
  string name = 1;
}

message GetMapDetailResponse {
     
  int32 code = 1;
  string msg = 2;
  repeated MapData data = 3;
}

message MapData {
     
  int32 id = 1;
  string label = 2;
}

コマンドの実行:
protoc --doc_out=json,yzt_proto.json:./output/./*.proto
生成されたファイル(docker cp id:コンテナ内のアドレスホストアドレス)をoutputで表示できます.
docker cp 74188c0250b6:output ./