工作中经常需要自己的私有库和公共库一起使用, Go 1.13 中又增加的库校验, 刚升级的同学难免会遇到问题, 需要看大量资料后才能正常使用. 本文着重于快速上手, 配之后能直接正常使用 Go Module, 帮助你避免看大段配置说明.
我将分为自用型, 和代理型两种模式进行演示.
私有库域名设定为: mink.gitlab.com
export GOPROXY=https://goproxy.cn,direct
export GOPRIVATE=mink.gitlab.com
说明: GOPRIVATE
中的地址, 会直连源地址获取库文件, 不走代理, 也不会做 GOSUMDB
库校验.
vim $HOME/.netrc
machine mink.gitlab.com login USERNAME password APIKEY
说明:
machine
后为私有库地址域名, USERNAME
替换为账户名, APIKEY
替换为密码.
详细说明: https://golang.org/doc/faq#git_https
使用 Athens
作为私库代理. 更适合供多人一起使用.
这里使用 docker
进行配置. 需要 filter_file
, netrc
, docker-compose.yml
配合使用.
filter_file
文件:
D
# 以下不需要通过GlobalEndpoint下载
+ mink.gitlab.com
netrc
文件:
machine mink.gitlab.com login USERNAME password APIKEY
详情参考 1.3
docker-compose.yml
文件:
---
version: '2'
services:
athens:
image: gomods/athens:v0.6.1
ports:
- "3000:3000"
volumes:
- ./netrc:/root/.netrc
- ./filter_file:/root/filter_file
environment:
- ATHENS_GLOBAL_ENDPOINT=https://goproxy.cn
- ATHENS_NETRC_PATH=/root/.netrc
- ATHENS_FILTER_FILE=/root/filter_file
- ATHENS_GONOSUM_PATTERNS=mink.gitlab.com
说明:
ATHENS_GLOBAL_ENDPOINT
: 代理地址. 使用 goproxy.cn
代理公共库(国内加速).ATHENS_GONOSUM_PATTERNS
: 对应地址会在库校验时返回403, 防止因客户端的错误配置, 使私库地址流入公网. 配置为私库地址, 支持通配符.
启动docker-athens
docker-compose up -d
export GOPROXY=https://127.0.0.1:3000,direct
export GONOSUMDB=mink.gitlab.com
说明: GONOSUMDB
中的地址, 会放弃 GOSUMDB
库校验, 库代码仍然从代理地址获取.