<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
對於我這種小白來說,本地環境搭建常規的操作一向是直接去go官網下載go安裝包,本機進行安裝,然後設定相應的GOROOT和GOPATH,再將GOPROXY和GO111MODULE設定完成,本地跑一下go env,可以正常使用就OK了。
不過,自從學習了docker之後,被深深的套路了。
說一下用docker部署本地環境的好處:
所以對於go而言,我也更希望能跑在docker容器上。
那麼接下來就開始吧!
我使用的是macOS Big Sur,在docker官網上下載對應的dmg包,也有docker desktop
下載地址推薦(下載速度快):http://get.daocloud.io/
接下來等待安裝,安裝的步驟就不贅述了,比較簡單
完成後,開啟終端,輸入,docker ,出現相關命令資訊,表示安裝成功!
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進入
進入容器後,接下來就是設定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映象,這也為後續與本機程式碼的使用奠定基礎,接下來就是最關鍵的一步了。
以上所有的步驟都是在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來驗證環境好不好用了
在我的工作目錄/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開發環境內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45