這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
+++
title=”golang進階(一)——glide的使用手冊”
date=”2017-10-10”
tags=[“golang”,”glide”,”docker”]
categories=[“資源管理”]
description=”golang也有包管理,類似maven,gradle,npm,bower之類的”
featured=true
image=”img/201710/fengjing1.jpeg”
+++
golang的包管理軟體有很多,我選擇了glide,由於深中docker之毒,所以方式也就用docker的方式來了,看不懂的先補docker的課
glide的Dockerfile
直接把glide做成鏡像,基礎鏡像是golang,把兩者打包成一個golang的運行環境
Dockerfile檔案如下
FROM golang:1.8-jessieMAINTAINER lastsweetop "lastsweetop@163.com"RUN mkdir /root/app/WORKDIR /root/app/RUN go get github.com/Masterminds/glideRUN echo export GOPATH=/root/app >> /root/.bashrcCMD tail -f ~/.bashrc
docker build一下,glide的鏡像就製作好了,只要一個人做好鏡像,團隊裡的其他人直接用就可以,多方便的docker啊
stack檔案
另外docker run的命令列也太長了,雖然只用一台伺服器,一樣也有stack,把所有配置寫在stack的設定檔裡
version: "3"services: dev: image: www.lastsweetop.com:5000/godev deploy: replicas: 1 resources: limits: cpus: "0.1" memory: 50M restart_policy: condition: on-failure volumes: - $PWD:/root/app
這樣本地的工程就與glide鏡像產生的容器結合了
glide操作
正題開始
glide init
這樣會產生一個glide.yaml檔案,格式如下
package: .import: []
如果代碼中新加了一個第三方包
package cmdimport ( "github.com/spf13/cobra")var RootCmd = &cobra.Command{ Use: "hugo", Short: "Hugo is a very fast static site generator", Long: `A Fast and Flexible Static Site Generator built with love by spf13 and friends in Go. Complete documentation is available at http://hugo.spf13.com`, Run: func(cmd *cobra.Command, args []string) { // Do Stuff Here },}
其實只需要
glide up
這樣就可以了,會自動安裝你所有新增的包,但是並不會出現在glide.yaml檔案中,不過沒關係,同事間的版本唯一性是由glide.lock控制的
hash: 3bac0e5b315ed9ae09f31bfae4f77c882ce25d42ccfa70f4dc9fe0cd0bef499fupdated: 2017-10-09T10:55:56.169042004Zimports:- name: github.com/inconshreveable/mousetrap version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75- name: github.com/spf13/cobra version: 50204810fdb5010baae72e4f41b303689cbdcc9f- name: github.com/spf13/pflag version: a9789e855c7696159b7db0db7f440b449edf2b31testImports: []
除非需要指定包的特定版本,才需要修改glide.yaml檔案
目錄結構
這是一個大坑,其他資料都說放在工程的根目錄,其實是有歧義的,其實是放在GOPATH中的src檔案目錄下的任意一級
這是我的目錄結構
.├── README.md├── bin│ └── main├── pkg│ └── linux_amd64│ ├── lastsweetop.com│ └── vendor├── src│ ├── glide.lock│ ├── glide.yaml│ ├── lastsweetop.com│ │ ├── cmd│ │ ├── main│ │ ├── model│ │ └── tools│ └── vendor│ └── github.com└── stack-gonne.yml