搭建私有goproxy LatteCake
source link: https://lattecake.com/post/20117?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Home / PostsPost
搭建私有goproxy
嘟噜聪2019/09/11 19:03:45 2938人已阅
简介 由于众所周知的原因,在大陆的网络环境是无法访问到golang.org等google的网站的。但在开发日常中使用的很多依赖包或系统包依赖都是在google的服务器上。为了解决无法加载依赖的问题,国内也有很多种解决方案。一种是使用goproxy.io或七牛主导的goproxy.cn。
搭建私有goproxy
由于众所周知的原因,在大陆的网络环境是无法访问到golang.org等google的网站的。但在开发日常中使用的很多依赖包或系统包依赖都是在google的服务器上。为了解决无法加载依赖的问题,国内也有很多种解决方案。一种是使用goproxy.io或七牛主导的goproxy.cn。
在企业里,有很多情况是生产网络或测试网络环境是无法正常访问外网的,为了解决这个问题可能需要自己搭建一个proxy来管理依赖包。
搭建goprxoy
找一台可以访问外网的服务器。
下载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())
}
在本机执行:
$ export GOPROXY=https://127.0.0.0:8080
$ GO111MODULE=on go build
进入/opt/data
目录可以看到拉取的依赖包缓存。
使用goproxy.cn
在七牜云创建一个空间"go-proxy":
克隆goproxy.cn
配置文件config.toml
# 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"
设置好配置文件后,直接启动就好了:
$ go build
$ ./goproxy.cn
在七牛云上可以看到仓库增加的资源:
在开普勒云上部署goproxy
首先依然是在github上创建一个project,名叫go-proxy,然后增加一个Dockerfile文件:
FROM goproxy/goproxy:latest
CMD ["/goproxy", "-listen=0.0.0.0:8080", "-cacheDir=/opt/data", "-proxy", "https://goproxy.io", "-exclude", "*.nsini.com"]
Dockerfile很简单,就两行代码。完成之后创建一个releases
版本,名叫v1.0
:
然后我们打开开普勒云平台https://kplcloud.nsini.com。
创建一个用
名称就叫goproxy吧。
随便选择一个语言,然后输入github上的仓库地址,选择刚刚创建好的releases
版本。选择启动的容器数量及规格,输入启动的端口8080
并点击提交就好了。
然后管理员进行应用的审核:
审核完成之后直接开始部署,然后可以在微信看到构建情况(若您关注了并且在平台订阅了操作类型):
完成之后,为了让外部可以访问到该代理,需要生成一个对外可访问的地址:
这样就基本完成了。
挂载持久化存储
为了让下次拉取更加快捷,需要将拉取回来的包缓存在自己服务器上,因为容器是无状态的,所以这里需要挂载一个持久化存储块。
首先创建一个存储卷,然后在详情页进行挂载:
创建存储卷:
挂载存储卷:
同样的,手机有平台或邮箱会收到相关通知!
首先将GOPROXY
环境变量设置为刚刚生成的地址:goproxy.app.nsini.com
,然后执行构建:
$ export GOPROXY=https://goproxy.app.nsini.com
$ GO111MODULE=on go build
下图可以看到,已经将相应的版本包缓存到私有仓库了。
若您无法访问到proxy.golang.org,可以尝试自己搭建私有的goproxy,使用goproxy.io或goproxy.cn的源。
不用我说了,大家都懂的。
很赞哦! (84)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK