《kratos-base-project》 之 微服务出发

749 阅读2分钟

本文讲为大家简介一下基于bilibili的微服务框架搭建的快速开发微服务项目基石 ,采用大仓结构的微服务项目:kratos-base-project。

目标:基于个人需要或公司要求,将常用的功能,以微服务的形式整合起来,并依附于一个管理后台及前端api demo项目。已实现按钮接口级别的权限控制

演示地址  

PS:演示数据由定时任务服务,每10分钟初始化恢复demo数据库,可能会导致你的数据丢失

项目目录


├── api // api proto文件和生成文件

├── app // 服务集合

│  ├── administrator // 管理员服务

│  ├── authorization // 权限服务

│  ├── jobs // 分布式定时任务

│  ├── └── initDB // 初始化数据库

│  └── project // api接口服务

│      └── // api接口服务

├── deploy // 部署文件

├── pkg // 自定义包

├── third_party // 第三方包

├── web // 管理后台前端页面 基于vue-element-admin

目前已经完成的服务如下

管理后台服务

  • 管理后台

管理员服务

  • 登录退出

  • 管理员管理

权限服务

  • 角色管理

  • 菜单管理

  • 权限管理

  • api管理

其他

  • 定时任务

运行方式

组件

管理后台web框架: vue-element-admin

服务注册与发现: ETCD

链路追踪:jaeger

数据库:mysql #文件位于docs/initSql

缓存:redis

orm: GORM

安装

后端

1.下载


$ go clone github.com/ZQCard/kratos-base-project

2.安装依赖


$ cd kratos-base-project && go mod tidy

3.设置配置 以管理员服务为例,配置文件位于service/configs/初始化sql文件位于docs/initSql


$ vim ./app/administrator/service/configs/config.yaml

4.运行项目


$ kratos run

前端

1.安装依赖


$ cd web && npm install

2.启动项目


$ npm run dev

部署(docker)

后端

可以参考kratos部署 (go-kratos.dev/docs/devops…)

1.服务部署 以管理员服务为例app/


$ cd app/administrator/service

2.make打包docker镜像


# PS:如果是打包admin镜像 app/project/admin/service 请执行make dockerAdmin

$ make docker

3.运行容器


# 注意端口映射设置, docker部署容器9000端口, 本地开发端口不能全是9000

docker run -p 9000:9000 --name kratos-base-project-administrator --restart=always -v /data/project/kratos-base-project/app/administrator/service/configs:/data/conf -d kratos-base-project/administrator-service:0.1.0

前端

1.进入前端目录


$ cd web

2.编译


$ npm run build:prod

3.将dist文件夹上传至服务器

nginx示例

server {

listen 80;

listen [::]:80;

server_name kratos.niu12.com;

index index.html;

root /data/project/kratos-base-project/web/dist;

  # 管理后台接口转发代理

location  /api/ {

      # nginx代理设置Header

    proxy_set_header            X-real-ip $remote_addr;

    proxy_pass                  http://127.0.0.1:8000/;

    }

}