{"repo":"OldSmokeGun/go-scaffold","free":true,"listed":false,"github":"https://github.com/OldSmokeGun/go-scaffold","clone":"git clone https://github.com/OldSmokeGun/go-scaffold.git","description":"Golang development basic scaffold","language":"Go","stars":174,"topics":["framework","golang","kratos","scaffold","grpc","http","echo"],"license":"MIT","category":"networking-infra","readme_excerpt":"介绍 分层架构 如何运行 go build 或 go run make docker\\-compose 热重启 运行子命令或脚本 配置 配置模型 远程配置 监听配置变更 日志 依赖注入 如何部署 Dockerfile docker\\-compose Kubernetes 介绍 go-scaffold 是一个基于 cobra 和 kratos 框架的脚手架，基于 wire 实现功能的组件化 go-scaffold 采用清晰架构，开箱即用，使用简单，可以快速搭建起一个微服务进行业务代码的开发，支持功能： - cobra 命令行 - cron 定时任务 - apollo 远程配置中心和配置监听 - 日志切割 - 服务注册和发现 - jaeger 链路追踪 - Swagger 文档生成 - docker-compose 和 Kubernetes 部署 - 统一的错误处理 - 基于 wire 依赖注入的组件化（ db 、 redis 等） - ... 分层架构 如何运行 首先将 etc/config.yaml.example 拷贝为 etc/config.yaml go build 或 go run 1. go build 方式 2. go run 方式 make docker-compose docker-compose 的启动方式有两种，一种是基于 air 镜像，一种是基于 Dockerfile 来构建镜像 注意： - 基于 air 镜像的方式只适用于开发阶段，请勿用于生产环境 - 在 Windows 系统环境下，热更新可能不会生效，这是因为 fsnotify 无法收到 wsl 文件系统的变更通知 - 基于 Dockerfile 的方式如果用于开发阶段，修改的代码将不会更新，除非在 docker-compose 启动时指定 --build 参数，但是这将会导致每次启动时都重新构建镜像，可能需要等待很长时间 热重启 热重启功能基于 air 运行子命令或脚本 命令行程序功能基于 cobra 配置 默认配置文件路径为： etc/config.yaml 可以在运行程序时通过 --config 或 -f 选项指定其它配置文件 配置模型 配置文件的内容在程序启动时会被加载到配置模型中 如何使用： provider 函数声明需要注入的配置模型的类型 如：声明需要的配置模型类型： config.App 例： 远程配置 在启动程序时，可通过以下选项配置远程配置中心 - --config.apollo.enable : apollo 是否启用 - --config.apollo.endpoint : 连接地址 - --config.apollo.appid : appID - --config.apollo.cluster : cluster - --config.apollo.namespace : 命名空间 - --config.apollo.secret : secret 监听配置变更 在 internal/config/watch.go 文件的 watchKeys 变量中注册需要监听的配置键 注册完成后，如果配置文件内容发生变更，无需重启服务，更改内容会自动同步到配置实例中 例： 日志 日志基于 slog，日志的切割基于 file-rotatelogs 日志内容默认输出到 logs 目录中，并且根据每天的日期进行分割 可在程序启动时，通过以下选项改变日志行为： - --log.path : 日志输出路径 - --log.level : 日志等级（ debug 、 ","default_branch":null,"files":null,"tree":[],"storefront":"/r/OldSmokeGun","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/OldSmokeGun/go-scaffold/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}