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,解決了所有依賴的下載問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章