本地使用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


猜你喜欢
- 此程序为先调用opencv自带的人脸检测模型,检测到人脸后,再调用我自己训练好的模型去识别人脸,使用时更改模型地址即可#!usr/bin/e
- 本文实例讲述了wxPython框架类和面板类的使用方法,分享给大家供大家参考。具体分析如下:实现代码如下:import wx c
- 概要在前面章节我们为主页定义了一个简单的模板,部分尚未实现的模块如用户或帖子等使用模拟的对象作为临时占位。本章我们将看到如何利用
- 如果这个问题不解决,那么MySQL将无法实际处理中文。 出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时
- 本文主要介绍Python中,class(类)的装饰器@staticmethod和@classmethod的使用示例代码和它们的区别。1、@s
- 开发环境:python版本2.X#!/usr/bin/env python# -*- coding:utf-8 -*-# 适合python版
- go get 和 go install 的区别先看结论:go get: 对 go mod 项目,添加,更新,删除&nbs
- 前言又到了每日分享Python小技巧的时候了,今天给大家分享的是Python中两种常见的数据类型合并方法。1 合并字典在某些场景下,我们需要
- 本文为大家分享了mysql 8.0.15 安装配置方法,供大家参考,具体内容如下1.安装完成后在安装根目录下做一个my.ini文件my.in
- 错误15105,从网上找了一些解决方案,一般都是说文件的权限不足的问题,当然附加的时候必须是有数据库附加权限才可以操作的。解决办法1:给相应
- 首先官网上的树形控件教程地址为Element - The world's most popular Vue UI framework
- Worksheet 对象的 rows 属性和 columns 属性得到的是一 Generator 对象,不能用中括号取索引。可先用列表推导式
- python寻找主串中所有指定子串下标该函数可实现显示字符串中指定子串所有下标(首字下标)def subStrIndex(substr,st
- 最近,某水果手机厂在万众期待中开了一场没有发布万众期待的手机产品的发布会,发布了除手机外的其他一些产品,也包括最新的水果14系统。几天后,更
- 在python中我们学习了不少理论知识,那么对相关的程序进行测试,就显得很重要了。本篇要讲的是unittest框架,我们可以用它来做一些测试
- 首先来描述下环境,在机器上有很多个JAVA程序,我们在每个JAVA程序里都配置了一个启动|停止|重启的脚本举个例子:我们现在要同时运行这些脚
- 这是一个很简单的纯CSS相册滑动浏览效果,仅用一个无序列表ul结合简单的CSS就可以实现。原文中介绍的纵向滑动相册的实现方法,但是相比之下个
- 开门见山,直接使用 skimage 库为图像添加高斯噪声是很简单的:import skimageorigin = skimage.io.im
- ./当前目录 /网站主目录 ../上层目录 ~/网站虚拟目录 如果当前的网站目录为E:\wwwroot 应用程序虚拟目录为E:\wwwroo
- 先看一个示例代码如下<template> <div align="center" styl