4

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

 1 year ago
source link: https://studygolang.com/articles/35998
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Kratos Base Project

本项目为一个使用 kratos框架 创建的,基础的微服务项目模板, 以便于后续快速开发。

目前已经实现管理后台管理员和权限系统,已经实现按钮、接口级权限.

演示地址

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

├── api // api proto文件和生成文件
├── app // 服务集合
│   ├── administrator // 管理员服务
│   ├── authorization // 权限服务
│   ├── jobs // 分布式定时任务
│   ├── └── initDB // 初始化数据库
│   └── project // api接口服务
│       └── // api接口服务
├── deploy // 部署文件
├── pkg // 自定义包
├── third_party // 第三方包
├── web // 管理后台前端页面 基于vue-element-admin

管理后台服务

  • [x] 管理后台

管理员服务

  • [x] 登录退出
  • [x] 管理员管理
  • [x] 角色管理
  • [x] 菜单管理
  • [x] 权限管理
  • [x] api管理
  • [x] 定时服务
  • [ ] 文件服务
  • [ ] 短信服务

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

服务注册与发现: ETCD

链路追踪:jaeger

数据库:mysql

缓存:redis

orm: GORM

1.导入sql

文件位于docs/initSql
$ 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部署 (https://go-kratos.dev/docs/devops/docker)

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
$ 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/;
  }

}
  • 有任何建议,请扫码添加我微信进行交流。
扫码提建议

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK