mirror of https://github.com/goproxyio/goproxy
update flags
parent
ebcb9429d3
commit
4b5758264e
|
@ -9,7 +9,7 @@ A global proxy for go modules. see: [https://goproxy.io](https://goproxy.io)
|
||||||
|
|
||||||
## Started
|
## Started
|
||||||
|
|
||||||
./goproxy -listen=0.0.0.0:80 -root=/ext
|
./goproxy -listen=0.0.0.0:80 -cacheDir=/cache
|
||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
|
|
||||||
|
@ -17,11 +17,12 @@ A global proxy for go modules. see: [https://goproxy.io](https://goproxy.io)
|
||||||
|
|
||||||
Use the -v flag to persisting the proxy module data (change ___go_repo___ to your own dir):
|
Use the -v flag to persisting the proxy module data (change ___go_repo___ to your own dir):
|
||||||
|
|
||||||
docker run --name goproxy -d -p80:8081 -v go_repo:/ext goproxyio/goproxy
|
docker run --name goproxy -d -p80:8081 -v go_repo:/cache goproxyio/goproxy
|
||||||
|
|
||||||
## Docker Compose
|
## Docker Compose
|
||||||
|
|
||||||
docker-compose up
|
docker-compose up
|
||||||
|
|
||||||
## Appendix
|
## Appendix
|
||||||
1. set `$GOPROXY` to chain your proxy or disable the proxy
|
|
||||||
|
1. set `$GOPROXY` to change your proxy or disable the proxy
|
||||||
|
|
32
main.go
32
main.go
|
@ -4,43 +4,45 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"github.com/goproxyio/goproxy/pkg/proxy"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/goproxyio/goproxy/pkg/proxy"
|
||||||
)
|
)
|
||||||
|
|
||||||
var listen string
|
var listen string
|
||||||
var root string
|
var cacheDir string
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
log.SetOutput(os.Stdout)
|
log.SetOutput(os.Stdout)
|
||||||
flag.StringVar(&root, "root", "/go", "root cache dir to save")
|
flag.StringVar(&cacheDir, "cacheDir", "", "go modules cache dir")
|
||||||
flag.StringVar(&listen, "listen", "0.0.0.0:8081", "service listen address")
|
flag.StringVar(&listen, "listen", "0.0.0.0:8081", "service listen address")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
if err := os.MkdirAll(root, os.ModePerm); err != nil {
|
|
||||||
log.Fatalf("goproxy: make root dir failed: %s", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
// sigs := make(chan os.Signal)
|
|
||||||
// signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
|
||||||
|
|
||||||
log.Printf("goproxy: %s inited. listen on %s\n", time.Now().Format("2006-01-02 15:04:05"), listen)
|
log.Printf("goproxy: %s inited. listen on %s\n", time.Now().Format("2006-01-02 15:04:05"), listen)
|
||||||
|
|
||||||
cacheDir := filepath.Join(root, "pkg", "mod", "cache", "download")
|
if cacheDir == "" {
|
||||||
if _, err := os.Stat(cacheDir); os.IsNotExist(err) {
|
cacheDir = "/go"
|
||||||
log.Printf("goproxy: cache dir %s is not exist. To create\n", cacheDir)
|
gpEnv := os.Getenv("GOPATH")
|
||||||
if err := os.MkdirAll(cacheDir, 0755); err != nil {
|
gp := filepath.SplitList(gpEnv)
|
||||||
|
if gp[0] != "" {
|
||||||
|
cacheDir = gp[0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fullCacheDir := filepath.Join(cacheDir, "pkg", "mod", "cache", "download")
|
||||||
|
if _, err := os.Stat(fullCacheDir); os.IsNotExist(err) {
|
||||||
|
log.Printf("goproxy: cache dir %s is not exist. To create it.\n", fullCacheDir)
|
||||||
|
if err := os.MkdirAll(fullCacheDir, 0755); err != nil {
|
||||||
log.Fatalf("make cache dir failed: %s", err)
|
log.Fatalf("make cache dir failed: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
http.Handle("/", proxy.NewProxy(root))
|
http.Handle("/", proxy.NewProxy(cacheDir))
|
||||||
// TODO: TLS, graceful shutdown
|
// TODO: TLS, graceful shutdown
|
||||||
err := http.ListenAndServe(listen, nil)
|
err := http.ListenAndServe(listen, nil)
|
||||||
if nil != err {
|
if nil != err {
|
||||||
|
|
|
@ -18,10 +18,10 @@ var cacheDir string
|
||||||
var innerHandle http.Handler
|
var innerHandle http.Handler
|
||||||
|
|
||||||
func NewProxy(cache string) http.Handler {
|
func NewProxy(cache string) http.Handler {
|
||||||
modfetch.PkgMod = filepath.Join(cache, "pkg/mod")
|
modfetch.PkgMod = filepath.Join(cache, "pkg", "mod")
|
||||||
codehost.WorkRoot = filepath.Join(modfetch.PkgMod, "cache/vcs")
|
codehost.WorkRoot = filepath.Join(modfetch.PkgMod, "cache", "vcs")
|
||||||
|
|
||||||
cacheDir = filepath.Join(modfetch.PkgMod, "cache/download")
|
cacheDir = filepath.Join(modfetch.PkgMod, "cache", "download")
|
||||||
innerHandle = http.FileServer(http.Dir(cacheDir))
|
innerHandle = http.FileServer(http.Dir(cacheDir))
|
||||||
|
|
||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
@ -71,10 +71,12 @@ func NewProxy(cache string) http.Handler {
|
||||||
rev, err := repo.Stat("latest")
|
rev, err := repo.Stat("latest")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errLogger.Printf("latest failed: %v", err)
|
errLogger.Printf("latest failed: %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
if err := downloadMod(modPath, rev.Version); err != nil {
|
if err := downloadMod(modPath, rev.Version); err != nil {
|
||||||
errLogger.Printf("download get err %s", err)
|
errLogger.Printf("download get err %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasSuffix(r.URL.Path, "/@v/list") {
|
if strings.HasSuffix(r.URL.Path, "/@v/list") {
|
||||||
|
|
Loading…
Reference in New Issue