成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

快速初始化容器化Gin項目

開發
本文主要聊了,如何使用Gin快速初始化一個項目,再將Gin項目打包成鏡像,最后以容器化的方式運行。

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

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

(1) 創建項目目錄:在命令行中創建一個新目錄,用于存放項目文件。然后進入該目錄:

mkdir my-gin-demo
cd 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 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("中間件開始執行了")
    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 項目。你可以根據需求進一步開發和擴展這個項目。

2、項目容器化

項目已經初始化完畢,接下來將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鏡像,并且以容器化的方式運行了。

3、項目地址

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

4、總結

本文主要聊了,如何使用Gin快速初始化一個項目,再將Gin項目打包成鏡像,最后以容器化的方式運行。

責任編輯:趙寧寧 來源: 不焦躁的程序員
相關推薦

2020-12-03 09:50:52

容器IoC流程

2023-05-03 23:48:24

Spring容器初始化

2023-11-12 23:08:17

C++初始化

2025-03-14 10:37:24

SpringSpring IOC容器

2025-05-21 10:09:09

Spring 5.xIOC編程

2010-03-25 14:42:33

2010-01-04 17:28:20

交換機端口

2019-11-04 13:50:36

Java數組編程語言

2009-09-08 09:48:34

LINQ初始化數組

2009-11-11 15:29:15

ADO初始化

2010-07-28 10:22:33

FlexApplica

2021-03-12 10:30:11

SpringMVC流程初始化

2022-07-06 10:37:45

SpringServlet初始化

2011-06-17 15:29:44

C#對象初始化器集合初始化器

2023-07-13 09:13:18

Docker容器

2009-12-16 14:04:04

Ruby對象初始化

2009-09-18 11:15:52

C#數組初始化

2009-09-25 16:55:08

Hibernate初始

2021-12-26 00:08:35

C++初始化列表

2011-03-16 10:52:20

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区视频在线观看 | 国产剧情一区二区三区 | 亚洲国产精品久久久 | 99久久久久国产精品免费 | 久久一区视频 | 久久网一区二区三区 | 精品亚洲一区二区三区 | 欧美xxxx网站 | 奇米久久久 | 日本三级黄视频 | 久久久久久国产精品 | 91九色在线观看 | 亚洲高清在线 | 亚洲v日韩v综合v精品v | www.中文字幕.com | 日韩一区二区三区四区五区六区 | 日韩在线视频一区 | 一区二区三区国产 | 91精品一区| 在线视频h | 日韩中文久久 | 亚洲小视频在线播放 | 欧美一级片在线播放 | 亚洲成人一区二区三区 | 久久久久久久国产 | 欧美午夜激情在线 | 久久久精彩视频 | www.久久久久久久久 | 在线观看中文字幕 | 日本福利在线观看 | 精品久久久久一区二区国产 | 亚洲国产精品网站 | 一本大道久久a久久精二百 欧洲一区二区三区 | 久久精品亚洲一区 | 自拍偷拍第一页 | 久久er精品 | 国产91丝袜在线播放 | 午夜日韩视频 | 国产亚洲精品久久情网 | 黄一区二区三区 | 99久久免费精品 |