go-zero 的 CLI 叫 goctl。记住这几条,从建工程到上容器一条龙。每条都配了命令与说明。
所有命令都来自 goctl,先确保它在 PATH 里。
装完验证:
$GOPATH/bin 加进 PATH:export PATH=$PATH:$(go env GOPATH)/bin写完 .api 文件,一键产出完整 rest 服务骨架。
-api 指定描述文件,-dir 指定输出目录。会生成 handler/logic/svc/types + main + yaml。
写完 .proto,生成 gRPC 桩 + zrpc 封装 + 配置 + main。
三个 out 分别产出消息、gRPC 接口、zrpc 服务端/客户端封装。-m 让 goctl 顺便把 main 和 yaml 也生成好。
把 SQL 表结构变成带缓存的 CRUD 代码,再也不手写 SQL 拼装。
Insert / FindOne / FindOneByXxx / Update / Delete。带 -c 时 FindOne 自动走缓存 + singleflight 防击穿。生成多阶段 Dockerfile 与 K8s 部署清单,省去手搓 yaml。
多阶段构建,最终镜像只有二进制 + 极简基础镜像。
产出 Deployment + Service,改镜像即可上集群。
日常 90% 用到的就这 8 条。
| 用途 | 命令 | 说明 |
|---|---|---|
| 安装 | go install .../goctl@latest | 装 CLI |
| HTTP 服务 | goctl api go -api x.api -dir . | 从 .api 生成 rest 骨架 |
| RPC 服务 | goctl rpc protoc x.proto --go_out=. --go-grpc_out=. --zrpc_out=. -m | 从 proto 生成 RPC |
| 数据模型 | goctl model mysql ddl -src x.sql -dir . -c | 从 SQL 生成带缓存 model |
| 连库生成 | goctl model mysql datasource -url=... -table=... -dir . -c | 从数据库反向生成 |
| Dockerfile | goctl docker -go main.go | 多阶段构建镜像 |
| K8s | goctl kube deploy -name x -image x:v1 -port 8888 | 产出 Deployment/Service |
| 格式化 | goctl api format -w x.api | 格式化 api 文件 |