{"id":13714183,"url":"https://github.com/ihahoo/gin-api-boilerplate","last_synced_at":"2025-11-18T10:02:28.545Z","repository":{"id":64306002,"uuid":"106040891","full_name":"ihahoo/gin-api-boilerplate","owner":"ihahoo","description":"A Go RESTful API server with gin and docker","archived":false,"fork":false,"pushed_at":"2019-07-18T15:49:22.000Z","size":19509,"stargazers_count":20,"open_issues_count":0,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-08-03T23:29:51.399Z","etag":null,"topics":["boilerplate","docker","gin","go","restful-api"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ihahoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-06T19:07:21.000Z","updated_at":"2024-02-16T19:08:49.000Z","dependencies_parsed_at":"2023-01-15T10:30:46.617Z","dependency_job_id":null,"html_url":"https://github.com/ihahoo/gin-api-boilerplate","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihahoo%2Fgin-api-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihahoo%2Fgin-api-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihahoo%2Fgin-api-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihahoo%2Fgin-api-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ihahoo","download_url":"https://codeload.github.com/ihahoo/gin-api-boilerplate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224551174,"owners_count":17330090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boilerplate","docker","gin","go","restful-api"],"created_at":"2024-08-02T23:01:54.200Z","updated_at":"2025-11-18T10:02:28.472Z","avatar_url":"https://github.com/ihahoo.png","language":"Go","funding_links":[],"categories":["Repositories"],"sub_categories":[],"readme":"# gin-api-boilerplate\nA Go RESTful API server with gin and docker\n\n\u003e 使用go 1.11起自带的 `go mod` 做包管理，不再使用`Dep`。新版go语言，项目目录可以不用在$GOPATH中了。不再使用`codegangsta/gin`，使用`fresh`为自动重新启动服务工具。\n\n## 安装\n安装最新的[Go](https://golang.org/)\n\n````\n$ git clone https://github.com/ihahoo/gin-api-boilerplate.git\n````\n\n## 启动开发环境\n安装自动重新启动服务工具[fresh](https://github.com/gravityblast/fresh)，这样在开发过程中，修改保存了文件后，会自动重启web服务。建议用docker环境开发和部署，下面构建的docker镜像，会安装此脚本。\n```\n$ go get github.com/pilu/fresh\n```\n启动服务：\n```\n$ make dev\n```\n测试服务：`http://localhost:8080/hello`\n\n## 构建和启动正式环境\n```\n$ make build\n$ make start\n```\n\n## 清理\n```\n$ make clean\n```\n\n## Docker\n- 安装[Docker](https://www.docker.com/) (请设置阿里云等镜像加速器, 不用加速器拉镜像速度很慢)\n- 安装[Docker Compose](https://github.com/docker/compose/releases) (一般在Windows和Mac下安装了Docker，同时会安装docker-compose)\n\n\u003e 开发环境是通过源代码的方式运行调试；测试和正式环境镜像只有可执行文件和配置文件，无源代码。\n\n### 构建和启动docker开发环境\n生成开发用的docker镜像，开发环境将项目根目录作为数据卷挂载到容器中。\n```\n$ make start-docker-dev\n```\n或者在项目根文件夹下通过以下命令启动：\n````\n$ docker-compose up -d\n````\n\n第一次启动会稍微花费点时间自动构建docker镜像，成功构建镜像后，下次启动不会再花费时间构建镜像。 \n\n通过docker-compose启动api web, postgres, redis三个容器，api web端口为8080, postgres端口为5432, redis端口为6379。数据库可通过本地客户端工具连接进行操作和调试。\n\n测试接口是否正常启动：请访问`http://localhost:8080/hello`看是否有反馈信息。\n\n### 停止开发环境\n````\n$ make stop-docker-dev\n````\n或者在项目根文件夹下运行命令：\n````\n$ docker-compose down\n````\n\n### 生成测试环境docker镜像\n修改`Makefile`，可以修改镜像名称\n````\n$ make docker-image-staging\n````\n\n### 生成生产环境docker镜像\n修改`Makefile`，可以修改镜像名称\n````\n$ make docker-image\n````\n\n## 包依赖管理\n包依赖管理使用[Go Modules](https://github.com/golang/go/wiki/Modules)，通过`go mod vendor`可以把当前项目的依赖模块安装到`vendor`目录下，使用Go Modules需要Go 1.11版本以上。\n\n本项目将`vendor`加入到git版本控制中，主要是因为一些包在国内会被屏蔽，另外做自动化构建和部署的时候，外部依赖包都在`vendor`中了，比较方便。\n\n## 注意\n- 本脚手架使用[gin](https://github.com/gin-gonic/gin)作为HTTP框架，使用方式请查看官网。也可以换成其它HTTP框架，使用方式类似。\n- [golint](https://github.com/golang/lint)为Go语言的Lint工具。详情请看官网。可以设置代码编辑器支持`golint`动态检测。\n- 一些配套工具比如配置文件、日志、数据库、reids等封装库，放到[go-api-lib](https://github.com/ihahoo/go-api-lib)，\n- 主配置文件采用json格式，文件位置`data/config/app.json`，配置库使用了[viper](https://github.com/spf13/viper)，详情请查看官网。\n- 封装了[Logrus](https://github.com/sirupsen/logrus)库为日志工具\n- 日常开发，在`api/`下放置接口的函数或方法，在`routes/`下配置路由，一般按功能分不同文件分开。\n- `docker/development` 为开发环境docker构建文件，`docker/staging`为测试环境docker-compose文件，`docker/production`为生产环境docker-compose文件。\n- 一般正式发布下服务器部署只包含`data/`目录（存放配置文件、日志、数据库文件等作为docker数据卷加载），`docker-compose.yml`（启动docker容器的编排文件)。\n- 一般正式发布下的docker镜像里的项目目录下，只有`Makefile`(make脚本)，`bin/`(编译过的可执行文件，启动服务的主执行文件)，`data/`(挂载的数据卷，存放配置文件、日志、数据库文件等)，部署出去的是编译好的可执行文件，相对安全独立。\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihahoo%2Fgin-api-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fihahoo%2Fgin-api-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihahoo%2Fgin-api-boilerplate/lists"}