搭建私有g(shù)oproxy
由于眾所周知的原因,在大陸的網(wǎng)絡(luò)環(huán)境是無法訪問到golang.org等google的網(wǎng)站的。但在開發(fā)日常中使用的很多依賴包或系統(tǒng)包依賴都是在google的服務(wù)器上。為了解決無法加載依賴的問題,國(guó)內(nèi)也有很多種解決方案。一種是使用goproxy.io或七牛主導(dǎo)的goproxy.cn。
在企業(yè)里,有很多情況是生產(chǎn)網(wǎng)絡(luò)或測(cè)試網(wǎng)絡(luò)環(huán)境是無法正常訪問外網(wǎng)的,為了解決這個(gè)問題可能需要自己搭建一個(gè)proxy來管理依賴包。
搭建goprxoy
找一臺(tái)可以訪問外網(wǎng)的服務(wù)器。
下載goproxy源碼:
$ go get github.com/goproxy/goproxy
$ vim main.go
增加main.go文件:
package main
import (
"net/http"
"github.com/goproxy/goproxy"
)
func main() {
http.ListenAndServe(":8080", goproxy.New())
}
在本機(jī)執(zhí)行:
$ export GOPROXY=https://127.0.0.0:8080
$ GO111MODULE=on go build
進(jìn)入/opt/data目錄可以看到拉取的依賴包緩存。
使用goproxy.cn
# Air
[air]
app_name = "goproxy-china"
debug_mode = true
address = "0.0.0.0:8080"
minifier_enabled = true
gzip_enabled = true
coffer_enabled = true
i18n_enabled = true
# Zerolog
[zerolog]
logger_level = "debug"
# Qiniu Cloud Kodo
[kodo]
endpoint = "s3-cn-north-1.qiniucs.com"
access_key = "<ACCESS_KEY>" # qiniu access_key
secret_key = "<SECRET_KEY>" # qiniu secret_key
bucket_name = "go-proxy"
bucket_endpoint = "go-proxy.s3-cn-north-1.qiniucs.com"
# Goproxy
[goproxy]
go_bin_name = "go"
local_cache_root = "/opt/data"
設(shè)置好配置文件后,直接啟動(dòng)就好了:
$ go build
$ ./goproxy.cn
在開普勒云上部署goproxy
首先依然是在github上創(chuàng)建一個(gè)project,名叫g(shù)o-proxy,然后增加一個(gè)Dockerfile文件:
FROM goproxy/goproxy:latest
CMD ["/goproxy", "-listen=0.0.0.0:8080", "-cacheDir=/opt/data", "-proxy", "https://goproxy.io", "-exclude", "*.nsini.com"]
創(chuàng)建一個(gè)用
掛載持久化存儲(chǔ)
測(cè)試
首先將GOPROXY環(huán)境變量設(shè)置為剛剛生成的地址:goproxy.app.nsini.com,然后執(zhí)行構(gòu)建:
$ export GOPROXY=https://goproxy.app.nsini.com
$ GO111MODULE=on go build
尾巴
?