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

作者:Jerry%chow 时间:2024-04-30 10:05:49 

前言

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

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

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

  • 可以保持系统软件环境的纯净。这一点对于喜欢折腾各种工具软件,然后把系统依赖环境搞的一团糟的我来说,特别受用。

  • 开发环境和当前使用系统不再强依赖。这也是我喜欢的,这样我不需要担心本地系统的各种配置文件配置,以及多个环境之间以为系统差异导致的依赖包不同造成问题,比如本地跑代码正常,线上跑不通等。

  • 开发软件的管理方式更加统一。各种编程语言都有各自的安装流程和步骤,各种应用服务的安装和配置方式也各不相同。通过 Docker,不论是 MySQL,还是 Redis,我都只需要拉镜像,映射端口,然后启动容器就可以正常使用了。

所以对于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

  • 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库,用于整个项目组的基本环境搭建使用,以后协同开发的镜像都是统一的,生产也可以使用。

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

来源:https://blog.csdn.net/weixin_42687353/article/details/124656022

标签:docker,go,开发环境
0
投稿

猜你喜欢

  • Python实现生成随机数据插入mysql数据库的方法

    2024-01-19 09:28:42
  • 浅谈MySQL数据库崩溃(crash)的常见原因和解决办法

    2024-01-17 12:52:58
  • python Kmeans算法原理深入解析

    2022-03-01 07:26:55
  • PHP Laravel门面的实现原理详解

    2023-05-25 06:42:36
  • python 如何将带小数的浮点型字符串转换为整数

    2021-04-24 01:35:51
  • 详解Python中的Dict(下篇)

    2021-11-10 17:16:14
  • Python Matplotlib简易教程(小白教程)

    2023-12-29 05:31:57
  • MYSQL教程:服务器优化和硬件优化

    2009-02-27 15:43:00
  • 微软雅黑的设计

    2010-02-23 20:36:00
  • python中PyQuery库用法分享

    2023-12-05 03:08:31
  • Pycharm运行时总是跳出Python Console问题

    2023-06-22 11:40:34
  • Python 文件与文件对象及文件打开关闭

    2021-06-16 16:08:44
  • Python跑循环时内存泄露的解决方法

    2023-07-18 08:18:22
  • Python中__init__和__new__的区别详解

    2023-09-24 13:14:17
  • django将网络中的图片,保存成model中的ImageField的实例

    2023-12-23 01:11:33
  • 关于jupyter lab安装及导入tensorflow找不到模块的问题

    2023-05-13 18:03:32
  • 几款好用的前端开发编辑器推荐安利

    2023-11-21 13:30:00
  • js和php如何获取当前url的内容

    2023-11-14 10:09:12
  • 解析MySQL8.0新特性——事务性数据字典与原子DDL

    2024-01-28 18:36:35
  • 网站508规范(译)

    2008-04-03 13:26:00
  • asp之家 网络编程 m.aspxhome.com