V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ysz1121
V2EX  ›  Go 编程语言

快速部署一个私有的 goproxy server

  •  1
     
  •   ysz1121 · 2019-09-16 16:18:19 +08:00 · 3983 次点击
    这是一个创建于 1925 天前的主题,其中的信息可能已经有所发展或是发生改变。

    搭建私有 goproxy

    由于众所周知的原因,在大陆的网络环境是无法访问到 golang.org 等 google 的网站的。但在开发日常中使用的很多依赖包或系统包依赖都是在 google 的服务器上。为了解决无法加载依赖的问题,国内也有很多种解决方案。一种是使用 goproxy.io 或七牛主导的 goproxy.cn

    在企业里,有很多情况是生产网络或测试网络环境是无法正常访问外网的,为了解决这个问题可能需要自己搭建一个 proxy 来管理依赖包。

    在开普勒云上部署 goproxy

    首先依然是在 github 上创建一个 project,名叫 go-proxy,然后增加一个 Dockerfile 文件:

    FROM goproxy/goproxy:latest
    
    CMD ["-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.iogoproxy.cn 的源。

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

    2 条回复    2019-09-17 14:39:08 +08:00
    pmispig
        1
    pmispig  
       2019-09-17 14:02:21 +08:00
    我整个人都开普勒了
    ysz1121
        2
    ysz1121  
    OP
       2019-09-17 14:39:08 +08:00
    @pmispig 哈哈哈 咋了这是
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3250 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:15 · PVG 20:15 · LAX 04:15 · JFK 07:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.