【统一解决docker run报错】例如 Cap老师提醒您 或 m1 max 电脑运行镜像的错误

来源:2-6 go-micro 入门案例编写

只是为了好玩

2022-01-01

问题原因:
根据解答经验,大都在第二课遇到此问题。
运行命令如下:

docker run --rm -v $ (pwd):$ (pwd) -w $(pwd) -e ICODE=xxx cap1573/cap-protoc -I ./ --go_out=./ --micro_out=./ ./*.proto

然后运行失败。

解决办法:
以Mac本本为例:
你的编程目标应该是这样的:
图片描述
就是说使用protoc命令,不再用docker run 那个命令了。

部署步骤:
以下命令可直接复制粘贴,手敲容易出错。

步骤1. brew安装
cd ~
brew install protobuf 
protoc --version
/*
安装成功,会看到如下输出:
libprotoc 3.13.0
*/

步骤2. 安装针对Go语言的代码生成插件
go get github.com/golang/protobuf/protoc-gen-go

步骤3. 安装protoc-micro-go

cd ~
git clone https://github.com/micro/protoc-gen-micro.git $GOPATH/src/github.com/micro/protoc-gen-micro
cd $GOPATH/src/github.com/micro/protoc-gen-micro
go build
sudo cp protoc-gen-micro $GOROOT/bin 

截图如下:
图片描述

执行完以上4步骤之后就算完成,以课程new-micro/proto/cap/imooc.proto为例:
图片描述
图片描述

命令:

// 记得在proto文件中添加 option, 是下面这样的
option go_package = ".;proto";

imooc.proto代码:

syntax = "proto3";
// 记得添加 option, 是下面这样的
option go_package = ".;proto";

package go.micro.service.imooc;

service Cap {
  //          SayRequest 接受客户端请求参数 SayResponse 将结果返回给客户端
  rpc SayHello(SayRequest) returns (SayResponse ) {}
}

message SayRequest {
  string message = 11;
}

message SayResponse {
  string answer = 12;
}

测试结果如下:
图片描述

可以看到大功告成!

细节总结:
你需要在cap老师给的proto文件添加这一行代码:

// 记得添加 option, 是下面这样的
option go_package = ".;proto";

记住,以后该课程,使用protoc,不使用docker run的话,你要在所有的protoc文件见添加这行命令,切记勿忘!!!

点个赞,置个顶,是对我输出的鼓励~
2022,奥利给~

其它问题:
问题图片描述:
图片描述
问题信息描述:
[root@cap~] protoc -I ./ --go_out=./ --micro_out=./ ./imooc.proto
protoc-gen-go: invalid Go import path “.” for "imooc.proto"
The import path must contain at least one forward slash (’/’) character.
See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.
–go_out: protoc-gen-go: Plugin failed with status code 1.

解决办法:
图片描述
该问题因人而异,一般是自己的protoc环境装的有问题导致的这个问题。
ps:我的protoc是 c++版,然后make install 编译的,这么做没遇到这个问题。

到这里应该就没啥问题了,该遇到的问题都有命令和图片说明。

写回答

2回答

Cap

2022-02-08

已经mark

1
1
星火燎原7650896
github.com/micro/protoc-gen-micro 这个repo已经没了...
2023-06-30
共1条回复

Shiyu_2020

2022-05-29

卡在了第三步, github.com/micro/protoc-gen-micro 这个repo已经没了...

0
1

Go微服务入门到容器化实践,落地可观测微服务项目

这可能是你全面提升Go微服务能力的好机会

861 学习 · 322 问题

查看课程