文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

本地使用Docker搭建go开发环境的全过程

2024-04-02 19:55

关注

前言

对于我这种小白来说,本地环境搭建常规的操作一向是直接去go官网下载go安装包,本机进行安装,然后配置相应的GOROOT和GOPATH,再将GOPROXY和GO111MODULE设置完成,本地跑一下go env,可以正常使用就OK了。

不过,自从学习了docker之后,被深深的套路了。

说一下用docker部署本地环境的好处:

所以对于go而言,我也更希望能跑在docker容器上。

那么接下来就开始吧!

安装

1.docker安装

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

下载地址推荐(下载速度快):http://get.daocloud.io/

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

完成后,打开终端,输入,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

三行代码解决!!

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

解释下关键的命令参数:

好了,这样就开启了,至于说为什么是用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

到这里就结束了,个人觉得还是稍有不便,以后再整理出一份用dockerfile来部署的办法,那样就方便多了一运行就可以了,到哪都能用。

总结

到此这篇关于本地使用Docker搭建go开发环境的文章就介绍到这了,更多相关Docker搭建go开发环境内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯