跳到主要内容

Gin

Gin 是一个高性能的 Go Web 框架,以其简洁、高效和易用性著称。它基于httprouter实现快速路由匹配,支持中间件机制,能轻松构建 RESTful API 或微服务。

本指南介绍如何通过多种方式在腾讯云托管上部署 Gin 应用程序:

创建一个 Gin 应用

Note: 如果你已经有了一个 Gin 应用,且确保 Dockerfile 文件和 main.go 文件都在根目录下,可以跳过这个步骤。

创建一个新的 Gin 应用,首先需要确保机器上安装 Go 服务程序。

创建一个目录`cloudrun-gin, 然后cd进入该目录。

执行如下命令在cloudrun-gin目录:

go mod init cloudrun-gin
go get -u github.com/gin-gonic/gin

cloudrun-gin目录下创建 main.go 文件,内容如下:

func main() {
router := gin.Default()

router.GET("/json", func(c *gin.Context) {
data := map[string]interface{}{
"id": 0,
"name": "zhangsan",
}

c.JSON(http.StatusOK, data)
})

// 监听并在 0.0.0.0:8080 上启动服务
router.Run(":8080")
}

执行 go run main.go 启动服务,访问http://localhost:8080/json可查看访问结果

配置 Dockerfile

1、在cloudrun-gin目录下创建一个Dockerfile 文件,内容如下(根据真实情况修改 FROM 行 golang 版本):

FROM golang:1.22.3-alpine as builder

# 指定构建过程中的工作目录
WORKDIR /app

# 将当前目录(dockerfile所在目录)下所有文件都拷贝到工作目录下(.dockerignore中文件除外)
COPY . /app/

# 执行代码编译命令。操作系统参数为linux,编译后的二进制产物命名为main,并存放在当前目录下。
RUN GOOS=linux go build -o main .

# 选用运行时所用基础镜像(GO语言选择原则:尽量体积小、包含基础linux内容的基础镜像)
FROM alpine:latest

# 容器默认时区为UTC,我们使用以下时区设置命令启用上海时区
# RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

# 使用 HTTPS 协议访问容器云调用证书安装
RUN apk add ca-certificates

# 指定运行时的工作目录
WORKDIR /app

# 将构建产物/app/main拷贝到运行时的工作目录中
COPY --from=builder /app/main /app/

# 执行启动命令
# 写多行独立的CMD命令是错误写法!只有最后一行CMD命令会被执行,之前的都会被忽略,导致业务报错。
# 请参考[Docker官方文档之CMD命令](https://docs.docker.com/engine/reference/builder/#cmd)
CMD ["/app/main"]

通过上面更改,你的 gin 程序将可以部署到腾讯云托管了!

部署到云托管

云托管提供了多种部署方式来部署你的应用:

控制台部署

打开腾讯云托管, 点击通过本地代码部署 -> 填写服务名称 -> 部署方式选择上传代码包 -> 代码包类型选择文件夹 -> 选择 cloudrun-gin 目录进行上传 -> 端口填写 8080 -> 点击创建并等待创建完成即可。

通过 cli 部署

如果您已经安装了 CloudBase CLI,可以在项目目录下使用以下命令将应用部署到 CloudBase 云托管:

tcb cloudrun deploy -p 8080

输入环境和服务名称后,CLI 会自动打包应用像并部署到云托管。

除了手动部署外,你也可以一键安装上述应用:

一键从模版部署

一键从 github 部署