# go-template **Repository Path**: tlipped/go-template ## Basic Information - **Project Name**: go-template - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-23 - **Last Updated**: 2025-10-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Go Web 项目模板(Docker + MySQL + Redis) 一个开箱即用的 Go 后端项目模板,集成 Docker 容器化部署、MySQL 数据库、Redis 缓存,适合快速搭建 RESTful API 服务。 > 🎯 **目标**:新人克隆即用,一键启动,环境统一,开发高效。 --- ## 🚀 快速启动 1. 安装 [Docker Desktop](https://www.docker.com/products/docker-desktop/) setting下的Docker Engine:{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "dns": [ "8.8.8.8", "8.8.4.4" ], "experimental": false, "features": { "buildkit": true }, "registry-mirrors": [ "https://registry-1.docker.io", "https://docker.1ms.run", "https://docker-0.unsee.tech", "https://docker.m.daocloud.io" ] } 2. 克隆配置项目 ```bash git clone https://gitee.com/tlipped/go-template.git cd go-template 统一密码和数据库名称! # MySQL 配置 MYSQL_ROOT_PASSWORD=tuling123 MYSQL_DATABASE=tuling # Redis 配置 REDIS_PASSWORD=tuling123 # JWT 或其他配置... 5. 启动服务(含热重载) docker-compose up --build ✅ 服务启动后访问:http://localhost:8081 💡 代码修改后,air 会自动重启,无需重新 docker-compose up。 docker-compose ps 查看是否构建了app,redis,mysql容器 ### 2. 项目结构说明 go-template/ ├── main.go # 程序入口,启动 Gin 服务 ├── config/ # 配置管理 │ └── config.go # 加载 .env 和 config.yaml ├── common/ # 公共工具 │ ├── db.go # GORM 数据库初始化 │ └── redis.go # Redis 客户端初始化 ├── model/ # 数据模型(GORM Struct) │ └── user.go # 示例:用户表结构 ├── handler/ # 控制器(HTTP 接口逻辑) │ └── user_handler.go # 示例:处理 /login 请求 ├── service/ # 业务逻辑层(处理复杂逻辑) │ └── user_service.go # 示例:登录密码校验、Token 生成 ├── route/ # 路由注册 │ └── router.go # 定义 /api/v1/login 等路由 ├── middleware/ # 中间件(跨域、日志、认证等) │ ├── cors.go │ ├── logger.go |—— response/ | |—— code.go # 封装的返回编码 | |—— response # 响应统一格式 ├── .gitignore # git commit忽略文件 ├── Dockerfile # Go 镜像构建 ├── docker-compose.yml # 定义 app + mysql + redis 服务 ├── air.toml # air 热重载配置 └── README.md ## 如何添加新接口?(以登录为例) ### 1. 定义模型(model/user.go) type User struct { ID uint `gorm:"primaryKey"` Username string `gorm:"unique;not null"` Password string `gorm:"not null"` } ### 2. 创建服务层:与数据库交互 func Login(username, password string) (string, error) { // 查询用户、校验密码、生成 Token } ### 3. 创建控制器:与前端交互 func Login(c *gin.Context) { var req LoginRequest } ### 4. 注册路由(route/router.go):与url交互给控制器 v1.POST("/login", handler.Login) ✅ 完成!访问 /api/v1/login 即可。 ## 如何添加数据库表? 1、在 model/ 目录下定义你的结构体 2、在 common/db.go 的 InitDB() 中调用: DB.AutoMigrate(&model.User{}, &model.Product{}, ...) docker-compose up --build ✅ GORM 会自动创建或更新表结构,无需手动建表。 🌐 前后端交互规范 从前端请求 → 路由 → 控制器 → 服务 → 模型 → 数据库 → 返回 1. 统一响应格式 { "code": 0, "msg": "success", "data": { ... } } code = 0 表示成功 code ≠ 0 表示失败,msg 为错误信息 2. 跨域支持 前端地址:http://localhost:3000 后端自动允许跨域请求(通过 middleware/cors.go) 支持携带 Authorization 头 前端页面: http://localhost:8080 ← Vue 开发服务器 ↓ 前端代码发请求: /api/login ↓ Vue 代理拦截 → 转发到 http://localhost:8081/api/login ↓ Docker 映射:8081 → 容器内:8081 ↓ Go 程序处理请求 ✅