mirror of https://github.com/goproxyio/goproxy
65 lines
2.0 KiB
Markdown
65 lines
2.0 KiB
Markdown
|
|
# GOPROXY [](https://circleci.com/gh/goproxyio/goproxy)
|
|
|
|
A global proxy for go modules. see: [https://goproxy.io](https://goproxy.io)
|
|
|
|
## Requirements
|
|
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.
|
|
|
|
## Build
|
|
git clone https://github.com/goproxyio/goproxy.git
|
|
cd goproxy
|
|
make
|
|
|
|
## Started
|
|
|
|
|
|
### Proxy mode
|
|
|
|
./bin/goproxy -listen=0.0.0.0:80 -cacheDir=/tmp/test
|
|
|
|
If you run `go get -v pkg` in the proxy machine, should set a new GOPATH which is not different from the old GOPATH, or mayebe deadlock.
|
|
See the file test/get_test.sh.
|
|
|
|
### Router mode
|
|
|
|
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.
|
|
|
|
./bin/goproxy -listen=0.0.0.0:80 -cacheDir=/tmp/test -proxy https://goproxy.io -exclude "*.corp.example.com,rsc.io/private"
|
|
|
|
## Use docker image
|
|
|
|
docker run -d -p80:8081 goproxy/goproxy
|
|
|
|
Use the -v flag to persisting the proxy module data (change ___cacheDir___ to your own dir):
|
|
|
|
docker run -d -p80:8081 -v cacheDir:/go goproxy/goproxy
|
|
|
|
## Docker Compose
|
|
|
|
docker-compose up
|
|
|
|
## Appendix
|
|
|
|
1. set `export GOPROXY=http://localhost` to enable your goproxy.
|
|
2. set `export GOPROXY=direct` to disable it.
|