golang进阶(一)——glide的使用手册
+++ 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
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |