Kratos 使用入门

984 阅读1分钟

环境设置

# go 版本 需大于等于 1.13
go version
go version go1.18.7 windows/amd64
# 开启GO111MODULE 
go env -w GO111MODULE=on       // Windows
export GO111MODULE=on          // macOS 或 Linux
# go proxy
go env -w GOPROXY=https://goproxy.cn,direct       // Windows  
export GOPROXY=https://goproxy.cn,direct          // macOS 或 Linux

官方使用说明

# 下载安装 kratos
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
# 更新
kratos upgrade
# 初始化项目模板
kratos new helloworld
# 更新项目依赖
cd helloworld
go mod download
# 生成 proto 模板
kratos proto add api/helloworld/v1/helloworld.proto
# 生成 proto 源码
kratos proto client api/helloworld/v1/helloworld.proto
# 生成 service 模板
kratos proto server api/helloworld/v1/helloworld.proto -t internal/service
# 生成 wire 依赖注入
go generate ./...
# 运行
kratos run

windows 使用

# 下载安装 protoc 二进制文件
https://github.com/google/protobuf/releases
# 选择win64的压缩包,下载并解压,将bin文件下的 protoc.exe 文件移动至 GOPATH/bin 目录下

# 安装 protobuf 库文件
go get -u github.com/golang/protobuf/proto

# 安装 goprotobu f插件
go get github.com/golang/protobuf/protoc-gen-go

# 安装 gogoprotobuf 插件和依赖
go get github.com/gogo/protobuf/protoc-gen-gogo
go get github.com/gogo/protobuf/protoc-gen-gofast
go get github.com/gogo/protobuf/proto
go get github.com/gogo/protobuf/gogoproto
# 安装框架依赖
go get -u google.golang.org/grpc
go get google.golang.org/genproto/...

windows make 命令使用

# windows 配置 git bin/bash 执行make命令
Goland file-setting-tools-terminal-application setting
shell path: Git路径\bin\bash.exe

# 初始化
make init
# proto 文件
make api
# build
make build
# wire
make generate
# all in one
make all

编译

mkdir deploy
go build -o ./deploy/ ./...

# linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./deploy/ ./...
# docker 
docker build -f Dockerfile -t server:v1 .
# docker-compose
docker-compose -f docker-compose.yaml up -d

错误处理

Q:
kratos new xy_admin
🚀 Creating service xy_admin, layout repo is https://github.com/go-kratos/kratos-layout.git, please wait a moment.

error: Your local changes to the following files would be overwritten by merge:
.gitignore
Makefile
api/helloworld/v1/error_reason.proto
cmd/server/main.go
cmd/server/wire.go
cmd/server/wire_gen.go
go.mod
go.sum
internal/biz/greeter.go
internal/data/data.go
internal/data/greeter.go
internal/server/grpc.go
internal/server/http.go
internal/server/server.go
openapi.yaml
third_party/google/protobuf/descriptor.proto
Please commit your changes or stash them before you merge.
Updating cc5192f..783d0de
Aborting

ERROR: Failed to create project(exit status 1)

A:
windows:删除用户目录下的 .kratos 文件夹

持续更新...