go1.13使用私有goproxy缓存加快依赖下载速度

go1.13的Go Modules有了重大改进,具体看看这篇 干货满满的 Go Modules 和 goproxy.cn

问题:
开发者在自己的电脑设置GOPROXY,Go Module的缓存保存在本地,多人开发时人人都要下载到自己本地,这样遇到网络不好的时候就很不好,另外CI/CD的时候又要重新下载,为了提高依赖的下载速度,所以要在内网搭建一个私有的goproxy,所有依赖都从这里下,不必重复去访问外网,这样速度就快多了。

这里使用的微软开源的athens

假设本地代码仓库(gitlab)的域名是git.test.com,在内网可以通过Https方式访问,参考

athens:
机器:192.168.1.11
可以访问git.test.com

在当前目录创建一个文件,名叫match,写入以下内容

downloadURL = "https://goproxy.cn"

mode = "async_redirect"

download "git.test.com/*" {
    mode = "sync"
}

然后启动ahtens:

# 这里使用host网络模式,比默认模式要快一些
# athens端口是3000
base=$PWD
data_dir=$base/data
user_dir=$base/root
# git.test.com需要用到的 ca根证书
cert_dir=$base/ca
name=athens-test

docker run -d \
  -v ${data_dir}:/var/lib/athens \
  -v ${user_dir}:/root \
  -v ${cert_dir}:/usr/local/share/ca-certificates \
  -v ${base}/match:/match \
  -e ATHENS_PORT=3000 \
  -e ATHENS_DISK_STORAGE_ROOT=/var/lib/athens \
  -e ATHENS_STORAGE_TYPE=disk \
  -e ATHENS_GONOSUM_PATTERNS='git.test.com/*' \
  -e ATHENS_DOWNLOAD_MODE="file:/match" \
  --name ${name} \
  --restart always \
  --net host \
  gomods/athens:0.7.0
  
docker exec ${name} sh -c 'update-ca-certificates'

注意go package在仓库的权限问题

客户端go1.13

GOSUMDB="sum.golang.google.cn"
GONOSUMDB="*.test.com"
GOPROXY="http://192.168.1.11:3000"

同样适用于go1.11/1.12

OK,解决了所有依赖的下载问题

你可能感兴趣的:(golang)