目录
文章目的是什么
环境介绍
Linux 环境下 docker 部署 go gin 详细步骤
部署 gin
文章目的是什么
假设我们学习了 go 语言,在 Linux 上安装了 go 相关的程序,也能直接运行,使用以下命令:
go run main.go
假如代码是这样的:
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
就会输出:
Hello World
但现在我们想要使用 docker 来部署,可能就有一些不同,复杂度肯定会比上面多一些。
所以本文的目的是:
使用 docker 部署 go,且可以运行 gin 框架的基础代码
环境介绍
我们开发时,基本上都是在自己电脑上,大多数应该都是 Windows,而我们项目发布上线时,一般又是使用的是 Linux,本文讲解的是 Linux 环境。
Linux:
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.9.2009 (Core)
Release: 7.9.2009
Codename: Core
Linux 环境下 docker 部署 go gin 详细步骤
docker安装golang 我在另一个文章中有详细的讲解,因为内容比较多,建议看一下另一篇文章
docker安装golang_docker golang-CSDN博客文章浏览阅读880次。最近玩 docker 比较多,试试安装 golang。第一步:先看一下镜像;第二步:下载镜像;第三步:进一步查看 golang 是不是我们指定安装的版本;第四步:运行容器_docker golanghttps://blog.csdn.net/longfeng995/article/details/131006514?spm=1001.2014.3001.5501上面这篇文章,正好是 Linux 环境部署go,并且成功运行了一段简单的代码,所以我们这里就直接跳过 docker 部署 go 的过程,而直接进入部署 gin
部署 gin
现在我们 Linux 环境中,创建我们的项目 demo 目录:
目录地址为:
/docker/go/project
在这个目录下,有一个项目:demo
接着再查看我们的容器:
docker ps
能看到,有一个容器正在运行,然后我们复制这个 容器ID
我们进入容器:
docker exec -it 容器ID bash
能看到,容器内,也跟我们 Linux 环境下的项目是一样的。
我们进入 demo 目录
cd demo
当前目录是没有任何文件的
第一步是要先初始化 mod,运行:
go mod init demo
能看到创建成功,我们可以切回 Linux下看看
因为挂载的关系,在容器里创建了文件、目录,在 Linux 环境里,也会创建,反之也是一样的。
接着我们再次进入容器,找到 demo 目录,下载并安装 gin
go get -u github.com/gin-gonic/gin
执行以上操作时,可能会出现错误,提示:"go: zip: not a valid zip file" 之类的错误。
我这边整理是说代理的问题,我上面使用的是阿里云代理,也很奇怪,有时候可以,有时候却会出现问题。
所以我切换成 七牛云代理。
go env -w GOPROXY=https://goproxy.cn,direct
然后我们再重新 下载安装gin 就可以了。
相关的 gin 包,我们就下载好了,一般我们敲代码都不会在容器内,所以我们需要切回 Linux 环境
我们可以先看一下,Linux 环境下,go.mod 文件的内容
然后我们创建 main.go 文件
进入 main.go 文件,粘贴以下代码
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
_ = r.Run() // listen and serve on 0.0.0.0:8080
}
然后我们进入 docker 容器,运行 go
go run main.go
可以看到,程序成功执行,端口默认的是 8080
当请求后,我们可以进入容器,查看请求记录
以上,就完成了在 Linux 环境下使用 docker 部署 go gin 并运行