当前位置:首页 > 科技  > 软件

快速初始化容器化Gin项目

来源: 责编: 时间:2024-01-15 09:20:27 309观看
导读Gin是一个使用Go语言开发的Web框架,追求性能和效率。1、使用Gin快速初始化项目(1) 创建项目目录:在命令行中创建一个新目录,用于存放项目文件。然后进入该目录:mkdir my-gin-democd my-gin-demo(2) 初始化 Go 模块:在项目

Gin是一个使用Go语言开发的Web框架,追求性能和效率。VPw28资讯网——每日最新资讯28at.com

VPw28资讯网——每日最新资讯28at.com

1、使用Gin快速初始化项目

(1) 创建项目目录:在命令行中创建一个新目录,用于存放项目文件。然后进入该目录:VPw28资讯网——每日最新资讯28at.com

mkdir my-gin-democd my-gin-demo

(2) 初始化 Go 模块:在项目目录中运行以下命令以初始化 Go 模块。这会创建一个 go.mod 文件,用于管理项目依赖。VPw28资讯网——每日最新资讯28at.com

go mod init github.com/your-username/my-gin-demo

(3) 安装 Gin 框架:下载并安装 Gin 框架。这个命令会把 Gin 框架作为项目依赖下载到本地。VPw28资讯网——每日最新资讯28at.com

go get -u github.com/gin-gonic/gin

(4) 创建并编辑 main.go 文件:在项目目录中创建一个 main.go 文件,并添加以下示例代码:VPw28资讯网——每日最新资讯28at.com

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下执行命令编译项目:VPw28资讯网——每日最新资讯28at.com

go build -o server .

执行完毕后,会得到`server`可执行文件。可以直接运行此文件。也可以按照下面方式运行项目。VPw28资讯网——每日最新资讯28at.com

(6) 运行项目:在命令行中执行以下命令来运行你的项目:VPw28资讯网——每日最新资讯28at.com

go run main.go

这将启动 Gin 服务器,默认监听 `8083` 端口。VPw28资讯网——每日最新资讯28at.com

现在,已经初始化了一个简单的使用 Gin 框架的 Golang 项目。你可以根据需求进一步开发和扩展这个项目。VPw28资讯网——每日最新资讯28at.com

2、项目容器化

项目已经初始化完毕,接下来将Gin项目打包成Docker镜像,然后以容器化的方式运行。VPw28资讯网——每日最新资讯28at.com

(1) 编写Dockerfile:在项目根目录下,增加Dockerfile,内容如下:VPw28资讯网——每日最新资讯28at.com

# 使用官方的 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仓库里的项目组。VPw28资讯网——每日最新资讯28at.com

# 构建镜像docker build -t harbor.dev.mangod.com/golang/my-gin-demo:0.0.1 .

(3) 推送镜像VPw28资讯网——每日最新资讯28at.com

# 推送镜像docker push harbor.dev.mangod.com/golang/my-gin-demo:0.0.1

(4) 拉取镜像并且启动容器VPw28资讯网——每日最新资讯28at.com

# 拉取镜像并且启动容器docker run -d -p 8083:8083 harbor.dev.mangod.com/golang/my-gin-demo:0.0.1

(5) 查看日志VPw28资讯网——每日最新资讯28at.com

docker logs -f 容器ID

至此,Gin项目已经打包成Docker镜像,并且以容器化的方式运行了。VPw28资讯网——每日最新资讯28at.com

3、项目地址

https://github.com/yclxiao/my-gin-demo.gitVPw28资讯网——每日最新资讯28at.com

4、总结

本文主要聊了,如何使用Gin快速初始化一个项目,再将Gin项目打包成镜像,最后以容器化的方式运行。VPw28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-60944-0.html快速初始化容器化Gin项目

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 从错误中学习: 了解Go编程的六个坏习惯

下一篇: 在Go中构建复杂对象: 构建器模式指南

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 中兴AX5400Pro+上手体验:再升级 双2.5G网口+USB 3.0这次全都有

    2021年11月的时候,中兴先后发布了两款路由器产品,中兴AX5400和中兴AX5400 Pro,从产品命名上就不难看出这是隶属于同一系列的,但在外观设计上这两款产品可以说是完全没一点关系
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • K6:面向开发人员的现代负载测试工具

    K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。k6 可用于测试各种应用程序,包括 Web
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 2023 年的 Node.js 生态系统

    随着技术的不断演进和创新,Node.js 在 2023 年达到了一个新的高度。Node.js 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的应用。本文就来看看 Node.js 最新的生
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • OPPO、vivo、小米等国内厂商Q2在印度智能手机市场份额依旧高达55%

    7月20日消息,据外媒报道,研究机构的报告显示,在全球智能手机出货量同比仍在下滑的大背景下,印度这一有潜力的市场也未能幸免,出货量同比也有下滑,多家厂
  • 自研Exynos回归!三星Galaxy S24系列将提供Exynos和骁龙双版本

    年初,全新的三星Galaxy S23系列发布,包含Galaxy S23、Galaxy S23+和Galaxy S23 Ultra三个版本,全系搭载超频版骁龙8 Gen 2,虽同样采用台积电4nm工艺制
Top