golang進階(一)——glide的使用手冊
+++
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-jessie
MAINTAINER lastsweetop "lastsweetop@163.com"
RUN mkdir /root/app/
WORKDIR /root/app/
RUN go get github.com/Masterminds/glide
RUN echo export GOPATH=/root/app >> /root/.bashrc
CMD 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 cmd
import (
"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: 3bac0e5b315ed9ae09f31bfae4f77c882ce25d42ccfa70f4dc9fe0cd0bef499f
updated: 2017-10-09T10:55:56.169042004Z
imports:
- name: github.com/inconshreveable/mousetrap
version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75
- name: github.com/spf13/cobra
version: 50204810fdb5010baae72e4f41b303689cbdcc9f
- name: github.com/spf13/pflag
version: a9789e855c7696159b7db0db7f440b449edf2b31
testImports: []
除非需要指定包的特定版本,才需要修改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
相關文章
- golang常用手冊:指標、結構體Golang指標結構體
- 改進版glide golang版本控制IDEGolang
- Linux使用手冊-vi使用手冊Linux
- golang常用手冊:陣列、變數作用域、函式Golang陣列變數函式
- golang常用手冊:資料型別、變數和常量Golang資料型別變數
- AutoMapper使用手冊(一)APP
- Android圖片快取之Glide進階Android快取IDE
- golang常用手冊:運算子、條件語句、迴圈語句Golang
- React進階小冊React
- TcpDump使用手冊TCP
- MyBatis 使用手冊MyBatis
- sqlmap使用手冊SQL
- Mybatis應用手冊MyBatis
- Tmux使用手冊UX
- Docker使用手冊Docker
- Promise使用手冊Promise
- Redis使用手冊Redis
- iptables 使用手冊
- DotProject 使用手冊Project
- Zabbix 使用手冊
- git 基本使用手冊Git
- Cobra框架使用手冊框架
- Memcached Client 使用手冊client
- jQuery使用手冊(收藏)jQuery
- 儀器使用手冊
- 程式設計師技術進階手冊(一)程式設計師
- PerfDog WEB端使用手冊Web
- 【C#】CsvHelper 使用手冊C#
- Room Database完全使用手冊OOMDatabase
- MongoDB和pymongo自用手冊MongoDB
- Git 快速使用手冊(二)Git
- less語法實用手冊
- Linux iptables應用手冊Linux
- gcc使用手冊(2)(轉)GC
- gcc使用手冊(3)(轉)GC
- gcc使用手冊(4)(轉)GC
- 《Redis 使用手冊》- 字串(PHP 版本)Redis字串PHP
- MySQL DBA 常用手冊小結MySql