A global proxy for go modules.
It invokes the local go command to answer requests. The default cacheDir is GOPATH, you can set it up by yourself according to the situation.
git clone https://github.com/zhcppy/goproxy.git
cd goproxy
make
Use the -proxy flag switch to "Router mode", which implements route filter to routing private module or public module .
direct
+----------------------------------> private repo
|
match|pattern
|
+---+---+ +----------+
go get +-------> |goproxy| +-------> |goproxy.io| +---> golang.org/x/net
+-------+ +----------+
router mode proxy mode
In Router mode, use the -exclude flag set pattern , direct to the repo which match the module path, pattern are matched to the full path specified, not only to the host component.
goproxy -listen=0.0.0.0:80 -cache=/tmp/test -proxy https://goproxy.io -exclude "*.corp.example.com,rsc.io/private"
docker run -d -p80:8081 goproxy/goproxy
Use the -v flag to persisting the proxy module data (change cache to your own dir):
docker run -d -p80:8081 -v cache:/go goproxy/goproxy
docker-compose up
- set
export GOPROXY=http://localhost
to enable your goproxy. - set
export GOPROXY=direct
to disable it.