- web framework: gin
- redis: redigo
- mysql: gorm
- logger: zerolog
- scheduler: cron
- config: viper
- json web token: jwt-go
- swagger docs: swaggo
$ git clone https://github.com/ErikJiang/market_monitor.git
进入应用服务源码目录:
$ cd market_monitor/app/src/目录结构:
app/src/: ├─config/ # 配置文件目录(运行前需要调整database、redis等参数配置) ├─controller/ # 控制器层目录 ├─docs/ # 接口文档 Swagger 生成目录 ├─extend/ # 扩展模块目录 ├─middleware/ # 中间件目录 ├─models/ # 数据模型层 ├─public/ # 静态资源目录 ├─router/ # 路由目录 ├─schedule/ # 定时任务目录 ├─service/ # 服务层目录 ├─templates/ # 视图模板层目录 ├─go.mod # 包管理文件 ├─go.sum # 依赖包版本哈希文件 └─main.go # 运行入口main文件
自主创建数据库:
CREATE DATABASE db_monitor DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
启动服务:
$ go run main.go
运行过程若出现下载 module 失败,或 build 缓慢,可尝试设置GOPROXY环境变量:
$ export GOPROXY=https://goproxy.io运行后访问:http://localhost:8000/swagger/index.html,查看接口文档;
进入项目根目录:
$ cd market_monitor/主目录结构:
market_monitor/ ├─docker-compose.yaml # compose 镜像服务构建文件 ├─app # monitor 应用服务 │ ├─src/ # 源码目录 │ └─dockerfile # docker 镜像构建文件 ├─mysql # mysql 数据服务 │ ├─conf │ │ ├─conf.d/ # 服务自定义配置(字符编码等) │ │ └─init.d/ # 初始化SQL脚本(建库语句)及用户权限设置 │ ├─data/ # 数据文件挂载目录 │ └─logs/ # 日志目录 └─redis # redis 缓存服务 ├─conf/ # 缓存服务自定义配置(密码等) └─data/ # 数据文件挂载目录
由于 app/ 下的 dockerfile 指定 golang 编译所需依赖从 app/src/vendor/ 目录中读取,故需要提前准备编译所需依赖:
$ cd app/src/
$ go mod vendor最后再回到项目根目录,使用 docker compose 以后台启动方式构建容器服务:
$ docker-compose up -d
简明教程请见: Wiki