# kratos-layout **Repository Path**: fmldd/kratos-layout ## Basic Information - **Project Name**: kratos-layout - **Description**: kratos微服务框架默认layout - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 16 - **Created**: 2023-05-25 - **Last Updated**: 2023-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Kratos 项目模板 ## 安装 Kratos ``` go install github.com/go-kratos/kratos/cmd/kratos/v2@latest ``` ## 创建一个服务 ``` # 创建一个模板项目 kratos new server cd server # 添加一个 proto 模板 kratos proto add api/server/server.proto # 生成 proto 代码 kratos proto client api/server/server.proto # 根据 proto 文件生成服务的源代码 kratos proto server api/server/server.proto -t internal/service go generate ./... go build -o ./bin/ ./... ./bin/server -conf ./configs ``` ## 通过 Makefile 生成其他辅助文件 ``` # 下载并更新依赖项 make init # 通过 proto 文件生成 API 文件(包括:pb.go、HTTP、gRPC、验证、Swagger) make api # 生成所有文件 make all ``` ## 自动化初始化(wire) ``` # 安装 wire go get github.com/google/wire/cmd/wire # 生成 wire cd cmd/server wire ``` ## 运行 ``` # 运行 # 本环境运行配置依赖apollo,如无apollo将local_config.yaml的apollo相关配置删除,在配置文件中配置好数据库和redis即可运行, # 如无数据库和缓存通过修改/helloworld/internal/data/data.go亦可运行,当然相关演示功能也将受限 # 如无需接入apm删除local_config.yaml的tracing相关配置 # 如无需接入eureka删除local_config.yaml的eureka相关配置 // ProviderSet is service providers. var MapperSet = wire.NewSet( model.NewGreeterMapper, NewDB, //替换注入为NewFakeCache ) var CacheSet = wire.NewSet( NewGreeterCache, NewCache, //替换注入为NewFakeCache ) make run ``` ## Docker ```bash # 构建 Docker 镜像 docker build -t . # 运行 Docker 容器 docker run --rm -p 8000:8000 -p 9000:9000 -v :/data/conf ``` 本服务基于 Kratos 框架,并集成了 Apollo、Swagger、Eureka、Redis、Nacos 和 GORM,并封装了 Mapper 和 Cache对Repo的CRUD提供理想模型下的通用实现,支持缓存注入; ## 配置 配置中心默认配置ID为application,配置yaml如下: ```yaml # apollo配置 apollo: appId: kratostest cluster: dev namespaceName: application ip: http://apollo.com.cn # nacos配置 nacos: ip: 101.226.150.108 port: 8848 group: DEFAULT_GROUP dataId: config.yaml namespace: kratos-test # 默认配置 application: server: http: addr: 0.0.0.0:8003 timeout: 3s grpc: addr: 0.0.0.0:9003 addrtimeout: 3s data: database: driver: mysql source: root:root@tcp(127.0.0.1:3306)/test redis: addr: 127.0.0.1:6379 type: one index: 2 password: abcdefghijklmn read_timeout: 0.5s write_timeout: 0.5s eureka: address: http://127.0.0.1:8761 path: eureka tracing: endpoint: http://ap-shanghai.apm.tencentcs.com:268/api/traces token: abcdefghijklmn ``` 配置使用混合加载模式,优先加载本地配置,从本地加载配置中心配置,apollo存在则加载,nacos配置存在则加载,然后合并本地,apollo,nacos配置向前覆盖; ## 注册中心 eureka配置存在则注册eureka,nacos配置存在则注册nacos,支持同时注册