36

搭建私有goproxy LatteCake

 4 years ago
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

avatar.jpg嘟噜聪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":

20190908-91b0b1952a5cd22c087d3e6510ed6e96.jpeg

克隆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

在七牛云上可以看到仓库增加的资源:

20190908-24741c5232a72835c4ecb50cf75e5740.jpeg

在开普勒云上部署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:

20190908-2682a3ebe50188852f98458f18b91f0d.jpeg

然后我们打开开普勒云平台https://kplcloud.nsini.com

创建一个用

名称就叫goproxy吧。

20190908-06c4f28f070de9df8e0f6e7ab5ea05e7.jpeg

随便选择一个语言,然后输入github上的仓库地址,选择刚刚创建好的releases版本。选择启动的容器数量及规格,输入启动的端口8080并点击提交就好了。

然后管理员进行应用的审核:

20190908-aa2d8cfeccd771aa1a39f3786b879a08.jpeg

审核完成之后直接开始部署,然后可以在微信看到构建情况(若您关注了并且在平台订阅了操作类型):

20190908-b09ab72185cba2223b34922c0b9c59cf.jpeg

完成之后,为了让外部可以访问到该代理,需要生成一个对外可访问的地址:

20190908-b13cd015e836e081ba47e4c59b8e1ca3.jpeg
20190908-93c8d3f034003aea0db80a779560e309.jpeg

这样就基本完成了。

挂载持久化存储

为了让下次拉取更加快捷,需要将拉取回来的包缓存在自己服务器上,因为容器是无状态的,所以这里需要挂载一个持久化存储块。

首先创建一个存储卷,然后在详情页进行挂载:

创建存储卷:

20190908-63a824707ff91d8850f69bbf878a7578.jpeg

挂载存储卷:

20190908-70df01dc3e368cfae0730f3ae68bf070.jpeg

同样的,手机有平台或邮箱会收到相关通知!

20190908-b095cebcd0c08bc5cbad84cf02b20d21.jpeg

首先将GOPROXY环境变量设置为刚刚生成的地址:goproxy.app.nsini.com,然后执行构建:

$ export GOPROXY=https://goproxy.app.nsini.com
$ GO111MODULE=on go build
20190908-ea3a5af5389b136d9f1efec2a5015681.jpeg
20190908-eba5986f8b629f1c1cf232bac7f5682d.jpeg

下图可以看到,已经将相应的版本包缓存到私有仓库了。

20190908-fffa1099893a013420b84ff297d77f1b.jpeg

若您无法访问到proxy.golang.org,可以尝试自己搭建私有的goproxy,使用goproxy.io或goproxy.cn的源。

不用我说了,大家都懂的。

static%2Fimages%2Freward%2Fweixin-RMB-xxx.JPG

很赞哦! (84)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK