温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

本地如何使用Docker搭建go开发环境

发布时间:2022-07-20 13:41:46 来源:亿速云 阅读:196 作者:iii 栏目:开发技术

本篇内容介绍了“本地如何使用Docker搭建go开发环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    安装

    1.docker安装

    我使用的是macOS Big Sur,在docker官网上下载对应的dmg包,也有docker desktop

    接下来等待安装,安装的步骤就不赘述了,比较简单

    完成后,打开终端,输入,docker ,出现相关命令信息,表示安装成功!

    2.go安装

    docker完成之后,可以到docker hub(https://hub.docker.com/)上找go的镜像

    我使用目前go的新版go 1.18.1,找的镜像是 golang:1.18.1-buster,拉取:

    docker pull golang:1.18.1-buster

    经过等待之后,完成下载

    docker images命令可以查看本地所有的镜像,可以看到golang的镜像已经在了,接下来就可以操作了

    运行这个镜像:

    docker run -d --privileged=true golang

    出现类似于”24bbe436b43ea9dd1da0e…“一串,说明启动成功

    进入容器:

    docker exec -it 24bbe436

    注意:这里的容器ID是我的,你可以用容器名字或者容器ID进入

    3.配置

    进入容器后,接下来就是设置go的env环境变量,首先用:

    go env

    既是为了验证go是否可以正常运行,也是为了查看下当前go的环境变量的情况

    一般初始化下,go需要自定义设置的就三个GOPATH、GOPROXY和GO111MODULE

    • GOPATH:go工作目录,也是以后代码存放的地方

    • GOPROXY:go包下载代理地址,为了下载包快速所改

    • GO111MODULE:允许go mod 包管理工具的使用

    三行代码解决!!

    go env -w GO111MODULE=on #开启go mod
    go env -w GOPROXY="https://goproxy.cn"
    go env -w GOPATH="/go"  #如果本身就是,那就不需要再改了,可以省略

    查看下,再次 go env,是否已修改为设置的这样

    自此,所有设置都完成,为了以后不重复进行设置,我们保存容器生成我们自己部署好的go环境镜像:

    docker commit 24bbe43 golang-local

    我将此容器重新打包为一个新的镜像,命名为golang-local,以后只要开启这个镜像,我就可以跑go代码了,当然,也可以将它传到远程hub库,用于整个项目组的基本环境搭建使用,以后协同开发的镜像都是统一的,生产也可以使用。

    远程库建议使用阿里云的,具体的可以自行百度,这里就不展开了

    好了,现在 docker images就可以查看到我打包的新的golang镜像,这也为后续与本机代码的使用奠定基础,接下来就是最关键的一步了。

    4.运行

    以上所有的步骤都是在docker里完成的,那么我们的本机与docker之间还存在着隔阂,本机放置的代码依然无法使用go环境,因为本机没有安装go,这个时候就需要用到docker经典的东东——挂载容器卷,将本地的目录与docker的容器关联起来,达到本地修改容器内的文件也可以同步修改,开始!!

    先关闭之前的golang容器,docker stop 24bbe43,因为我们不需要用到它了!

    然后开启我们新镜像

    docker run -itd -p 8080:8080 -v /Users/jay/go/project:/go --name golang-1.18.1 golang-local

    解释下关键的命令参数:

    • -p:端口映射,将docker的端口映射到本机端口,我们用8080

    • -v:挂载容器卷,冒号前面是本机的地址,后面是容器内存放地址,这里需要看你本地想放哪里,任意位置都可以,前提是需要写绝对路径,注意啊,我加粗字体了。

    • –name:容器别名,我主要是为以后多版本处理的话,可以看到当前容器的go版本,所以这么写,这个可以省略

    好了,这样就开启了,至于说为什么是用8080,这个不需要固定,可以任意改你想要的端口号,也有个前提,与本地应用软件的使用端口不要冲突!!!

    我用8080是因为我的goweb服务框架gin的默认端口就是8080,方便使用

    接下来就是用gin来验证环境好不好用了

    5.完成

    在我的工作目录/Users/jay/go/project下,

    建一个项目,就叫gin-demo吧,

    然后进入gin-demo,创建一个main.go文件,

    写上:

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        fmt.Println("Hello, Go.")
    }

    回到容器里查看下,对应的/go目录下是不是也存在相同的文件了,做个验证

    然后开始,在容器里操作,

    进入到gin-demo目录下,

    先验证下go代码能不能跑起来

    go run main.go

    出现Hello,Go. 说明正常可以跑代码了,到此处,go环境算是搭建完了。

    因为我需要用的是gin框架,所以接下的事情就是gin框架的使用

    go mod init创建go.mod文件,

    然后将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()
    }

    最后一步,go run main.go跑起来!!

    接下来就是见证奇迹的时刻

    打开浏览器,输入localhost:8080,回车!

    浏览器上显示 pong,成功!

    PS:go的代码运行还是需要在容器里操作,如果不想来回进出容器折腾,可以用go的一个fresh包,自动捕获代码变动重新打包运行,本地就可以快乐的写代码了,这个插件百度查下就行,这里分享一下包地址,就不细说了,我个人习惯自己去重启,比较不容易出错

    go热重启go get github.com/pilu/fresh

    运行 fresh 命令 ,fresh 将会自动运行项目的 main.go

    “本地如何使用Docker搭建go开发环境”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI