Gin是一个使用Go语言开发的Web框架,追求性能和效率。
(1) 创建项目目录:在命令行中创建一个新目录,用于存放项目文件。然后进入该目录:
mkdir my-gin-democd my-gin-demo
(2) 初始化 Go 模块:在项目目录中运行以下命令以初始化 Go 模块。这会创建一个 go.mod 文件,用于管理项目依赖。
go mod init github.com/your-username/my-gin-demo
(3) 安装 Gin 框架:下载并安装 Gin 框架。这个命令会把 Gin 框架作为项目依赖下载到本地。
go get -u github.com/gin-gonic/gin
(4) 创建并编辑 main.go 文件:在项目目录中创建一个 main.go 文件,并添加以下示例代码:
package mainimport ( "fmt" "github.com/gin-gonic/gin" "net/http" "time")func main() { r := gin.Default() r.Use(MiddleWare()) v2 := r.Group("v2") { v2.POST("loginJSON", loginJSON) } r.Run(":8083")}func MiddleWare() gin.HandlerFunc { return func(c *gin.Context) { t := time.Now() fmt.Println("中间件开始执行了") c.Set("request", "中间件") // 执行路由对应的函数 //c.Next() status := c.Writer.Status() fmt.Println("中间件执行完毕", status) t2 := time.Since(t) fmt.Println("time:", t2) }}func loginJSON(c *gin.Context) { var loginInfo Login if err := c.ShouldBindJSON(&loginInfo); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } if loginInfo.User != "root" || loginInfo.Password != "admin" { c.JSON(http.StatusBadRequest, gin.H{"status": "304"}) return } c.JSON(http.StatusOK, gin.H{"status": "200"})}type Login struct { User string `json:"username" binding:"required"` Password string `json:"password" binding:"required"`}
(5) 构建项目:在项目目录my-gin-demo下执行命令编译项目:
go build -o server .
执行完毕后,会得到`server`可执行文件。可以直接运行此文件。也可以按照下面方式运行项目。
(6) 运行项目:在命令行中执行以下命令来运行你的项目:
go run main.go
这将启动 Gin 服务器,默认监听 `8083` 端口。
现在,已经初始化了一个简单的使用 Gin 框架的 Golang 项目。你可以根据需求进一步开发和扩展这个项目。
项目已经初始化完毕,接下来将Gin项目打包成Docker镜像,然后以容器化的方式运行。
(1) 编写Dockerfile:在项目根目录下,增加Dockerfile,内容如下:
# 使用官方的 Golang 镜像作为基础镜像FROM golang:1.19# 设置工作目录WORKDIR /data/golang/my-gin-demo# 将本地文件复制到容器中COPY . .# 使用 Go Modules 下载依赖 编译项目RUN go env -w GO111MODULE=on / && go env -w GOPROXY=https://goproxy.cn,direct / && go env -w CGO_ENABLED=0 / && go mod download / && go mod tidy / && go build -o server .# 最终镜像使用轻量的 alpine 镜像FROM alpine:latest# 添加作者LABEL MAINTAINER="baily@gmail.com"# 设置工作目录WORKDIR /data/golang/my-gin-demo# 将二进制文件从前一个镜像中复制到这里COPY --from=0 /data/golang/my-gin-demo/server ./# 暴露端口EXPOSE 8083# 启动应用程序ENTRYPOINT ./server
(2) 构建镜像:构建镜像,这里的harbor.dev.mangod.com/golang/my-gin-demo是镜像名称,harbor.dev.mangod.com是自定义的harbor仓库地址,golang是harbor仓库里的项目组。
# 构建镜像docker build -t harbor.dev.mangod.com/golang/my-gin-demo:0.0.1 .
(3) 推送镜像
# 推送镜像docker push harbor.dev.mangod.com/golang/my-gin-demo:0.0.1
(4) 拉取镜像并且启动容器
# 拉取镜像并且启动容器docker run -d -p 8083:8083 harbor.dev.mangod.com/golang/my-gin-demo:0.0.1
(5) 查看日志
docker logs -f 容器ID
至此,Gin项目已经打包成Docker镜像,并且以容器化的方式运行了。
https://github.com/yclxiao/my-gin-demo.git
本文主要聊了,如何使用Gin快速初始化一个项目,再将Gin项目打包成镜像,最后以容器化的方式运行。
本文链接:http://www.28at.com/showinfo-26-60944-0.html快速初始化容器化Gin项目
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 从错误中学习: 了解Go编程的六个坏习惯
下一篇: 在Go中构建复杂对象: 构建器模式指南