av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

快速初始化容器化Gin項(xiàng)目

Gin是一個(gè)使用Go語言開發(fā)的Web框架,追求性能和效率。

創(chuàng)新互聯(lián)公司10多年企業(yè)網(wǎng)站制作服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及高端網(wǎng)站定制服務(wù),企業(yè)網(wǎng)站制作及推廣,對(duì)效果圖設(shè)計(jì)等多個(gè)行業(yè)擁有多年的網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

1、使用Gin快速初始化項(xiàng)目

(1) 創(chuàng)建項(xiàng)目目錄:在命令行中創(chuàng)建一個(gè)新目錄,用于存放項(xiàng)目文件。然后進(jìn)入該目錄:

mkdir my-gin-demo
cd my-gin-demo

(2) 初始化 Go 模塊:在項(xiàng)目目錄中運(yùn)行以下命令以初始化 Go 模塊。這會(huì)創(chuàng)建一個(gè) go.mod 文件,用于管理項(xiàng)目依賴。

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

(3) 安裝 Gin 框架:下載并安裝 Gin 框架。這個(gè)命令會(huì)把 Gin 框架作為項(xiàng)目依賴下載到本地。

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

(4) 創(chuàng)建并編輯 main.go 文件:在項(xiàng)目目錄中創(chuàng)建一個(gè) main.go 文件,并添加以下示例代碼:

package main

import (
  "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("中間件開始執(zhí)行了")
    c.Set("request", "中間件")
    // 執(zhí)行路由對(duì)應(yīng)的函數(shù)
    //c.Next()
    status := c.Writer.Status()
    fmt.Println("中間件執(zhí)行完畢", 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) 構(gòu)建項(xiàng)目:在項(xiàng)目目錄my-gin-demo下執(zhí)行命令編譯項(xiàng)目:

go build -o server .

執(zhí)行完畢后,會(huì)得到`server`可執(zhí)行文件??梢灾苯舆\(yùn)行此文件。也可以按照下面方式運(yùn)行項(xiàng)目。

(6) 運(yùn)行項(xiàng)目:在命令行中執(zhí)行以下命令來運(yùn)行你的項(xiàng)目:

go run main.go

這將啟動(dòng) Gin 服務(wù)器,默認(rèn)監(jiān)聽 `8083` 端口。

現(xiàn)在,已經(jīng)初始化了一個(gè)簡(jiǎn)單的使用 Gin 框架的 Golang 項(xiàng)目。你可以根據(jù)需求進(jìn)一步開發(fā)和擴(kuò)展這個(gè)項(xiàng)目。

2、項(xiàng)目容器化

項(xiàng)目已經(jīng)初始化完畢,接下來將Gin項(xiàng)目打包成Docker鏡像,然后以容器化的方式運(yùn)行。

(1) 編寫Dockerfile:在項(xiàng)目根目錄下,增加Dockerfile,內(nèi)容如下:

# 使用官方的 Golang 鏡像作為基礎(chǔ)鏡像
FROM golang:1.19
# 設(shè)置工作目錄
WORKDIR /data/golang/my-gin-demo
# 將本地文件復(fù)制到容器中
COPY . .
# 使用 Go Modules 下載依賴  編譯項(xiàng)目
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="[email protected]"
# 設(shè)置工作目錄
WORKDIR /data/golang/my-gin-demo
# 將二進(jìn)制文件從前一個(gè)鏡像中復(fù)制到這里
COPY --from=0 /data/golang/my-gin-demo/server ./
# 暴露端口
EXPOSE 8083
# 啟動(dòng)應(yīng)用程序
ENTRYPOINT ./server

(2) 構(gòu)建鏡像:構(gòu)建鏡像,這里的harbor.dev.mangod.com/golang/my-gin-demo是鏡像名稱,harbor.dev.mangod.com是自定義的harbor倉庫地址,golang是harbor倉庫里的項(xiàng)目組。

# 構(gòu)建鏡像
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) 拉取鏡像并且啟動(dòng)容器

# 拉取鏡像并且啟動(dòng)容器
docker run -d -p 8083:8083 harbor.dev.mangod.com/golang/my-gin-demo:0.0.1

(5) 查看日志

docker logs -f 容器ID

至此,Gin項(xiàng)目已經(jīng)打包成Docker鏡像,并且以容器化的方式運(yùn)行了。

3、項(xiàng)目地址

https://github.com/yclxiao/my-gin-demo.git

4、總結(jié)

本文主要聊了,如何使用Gin快速初始化一個(gè)項(xiàng)目,再將Gin項(xiàng)目打包成鏡像,最后以容器化的方式運(yùn)行。


文章題目:快速初始化容器化Gin項(xiàng)目
本文網(wǎng)址:http://uogjgqi.cn/article/codecch.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流