mirror of https://gitee.com/extrame/dget.git
fix 自定义registry
This commit is contained in:
parent
b1272ed2fc
commit
40d176f952
|
@ -0,0 +1,39 @@
|
|||
env.linux {
|
||||
GOOS: linux
|
||||
GOARCH: amd64
|
||||
}
|
||||
|
||||
client {
|
||||
go build .
|
||||
}
|
||||
|
||||
linux(.linux) {
|
||||
go build -o ./bin/${GOOS}_$GOARCH/ ./cmd/dget
|
||||
}
|
||||
|
||||
env.linux_arm {
|
||||
GOOS: linux
|
||||
GOARCH: arm
|
||||
}
|
||||
|
||||
linux_arm (.linux_arm){
|
||||
go build -o ./bin/${GOOS}_$GOARCH/ ./cmd/dget
|
||||
}
|
||||
|
||||
env.darwin {
|
||||
GOOS: darwin
|
||||
GOARCH: amd64
|
||||
}
|
||||
|
||||
darwin (.darwin){
|
||||
go build -o ./bin/${GOOS}_$GOARCH/ ./cmd/dget
|
||||
}
|
||||
|
||||
env.windows {
|
||||
GOOS: windows
|
||||
GOARCH: amd64
|
||||
}
|
||||
|
||||
windows (.windows){
|
||||
go build -o ./bin/${GOOS}_$GOARCH/ ./cmd/dget
|
||||
}
|
|
@ -22,6 +22,14 @@ dget influxdb:1.8.3
|
|||
|
||||
成功的话,会直接生成tar.gz包
|
||||
|
||||
## 关于从第三方registry下载
|
||||
|
||||
```
|
||||
dget alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:220901.1
|
||||
```
|
||||
|
||||
形如上述调用方法,直接在包名称前面跟上服务器地址即可(v1.0.1)
|
||||
|
||||
## 选择架构
|
||||
|
||||
最近很多的包都推出了多架构,命令增加了选择架构的功能
|
||||
|
|
|
@ -13,6 +13,8 @@ func main() {
|
|||
debug := flag.Bool("debug", false, "打印调试信息")
|
||||
printInfo := flag.Bool("print", false, "只打印获取信息")
|
||||
arch := flag.String("arch", "linux/amd64", "指定架构")
|
||||
var registry string
|
||||
flag.StringVar(®istry, "registry", "registry-1.docker.io", "指定镜像仓库")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
|
@ -36,8 +38,13 @@ func main() {
|
|||
if !found {
|
||||
tag = "latest"
|
||||
}
|
||||
partsOfPkg := strings.Split(pkg, "/")
|
||||
if len(partsOfPkg) == 3 {
|
||||
registry = partsOfPkg[0]
|
||||
pkg = strings.Join(partsOfPkg[1:], "/")
|
||||
}
|
||||
}
|
||||
err := dget.Install(pkg, tag, *arch, *printInfo)
|
||||
err := dget.Install(registry, pkg, tag, *arch, *printInfo)
|
||||
if err != nil {
|
||||
logrus.Fatalln("下载发生错误", err)
|
||||
}
|
||||
|
|
13
install.go
13
install.go
|
@ -22,7 +22,7 @@ import (
|
|||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
const _registry = "registry-1.docker.io"
|
||||
// const _registry = "registry-1.docker.io"
|
||||
const _authUrl = "https://auth.docker.io/token"
|
||||
const _regService = "registry.docker.io"
|
||||
|
||||
|
@ -69,7 +69,7 @@ type PackageConfig struct {
|
|||
Layers []string
|
||||
}
|
||||
|
||||
func Install(d, tag string, arch string, printInfo bool) (err error) {
|
||||
func Install(_registry, d, tag string, arch string, printInfo bool) (err error) {
|
||||
var authUrl = _authUrl
|
||||
var regService = _regService
|
||||
resp, err := http.Get(fmt.Sprintf("https://%s/v2/", _registry))
|
||||
|
@ -92,8 +92,9 @@ func Install(d, tag string, arch string, printInfo bool) (err error) {
|
|||
resp.Body.Close()
|
||||
var accessToken string
|
||||
logrus.Debugln("reg_service", regService)
|
||||
logrus.Debugln("authUrl", authUrl)
|
||||
|
||||
accessToken, err = getAuthHead("application/vnd.docker.distribution.manifest.v2+json", authUrl, regService, d)
|
||||
accessToken, err = getAuthHead(authUrl, regService, d)
|
||||
if err == nil {
|
||||
|
||||
var req *http.Request
|
||||
|
@ -337,14 +338,14 @@ response:
|
|||
return
|
||||
}
|
||||
|
||||
func getAuthHead(u, a, r, d string) (string, error) {
|
||||
func getAuthHead(a, r, d string) (string, error) {
|
||||
resp, err := http.Get(fmt.Sprintf("%s?service=%s&scope=repository:%s:pull", a, r, d))
|
||||
defer resp.Body.Close()
|
||||
if err == nil {
|
||||
defer resp.Body.Close()
|
||||
var results map[string]interface{}
|
||||
err = json.NewDecoder(resp.Body).Decode(&results)
|
||||
logrus.Debug(results)
|
||||
if err == nil {
|
||||
if err == nil && results["access_token"] != nil {
|
||||
return results["access_token"].(string), nil
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue