环境设置
# 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 文件夹
持续更新...