mirror of
https://github.com/yusing/godoxy.git
synced 2025-06-09 04:52:35 +02:00
docker provider fix test
This commit is contained in:
parent
2aa7c22011
commit
76d2cc2871
2 changed files with 25 additions and 18 deletions
BIN
bin/go-proxy
BIN
bin/go-proxy
Binary file not shown.
|
@ -15,7 +15,7 @@ import (
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (p *Provider) getContainerProxyConfigs(container types.Container, clientHost string) []*ProxyConfig {
|
func (p *Provider) getContainerProxyConfigs(container types.Container, clientIP string) []*ProxyConfig {
|
||||||
var aliases []string
|
var aliases []string
|
||||||
|
|
||||||
cfgs := make([]*ProxyConfig, 0)
|
cfgs := make([]*ProxyConfig, 0)
|
||||||
|
@ -43,7 +43,7 @@ func (p *Provider) getContainerProxyConfigs(container types.Container, clientHos
|
||||||
prop.Set(reflect.ValueOf(value))
|
prop.Set(reflect.ValueOf(value))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if config.Port == "" && clientHost != "" {
|
if config.Port == "" && clientIP != "" {
|
||||||
for _, port := range container.Ports {
|
for _, port := range container.Ports {
|
||||||
config.Port = fmt.Sprintf("%d", port.PublicPort)
|
config.Port = fmt.Sprintf("%d", port.PublicPort)
|
||||||
break
|
break
|
||||||
|
@ -92,8 +92,8 @@ func (p *Provider) getContainerProxyConfigs(container types.Container, clientHos
|
||||||
}
|
}
|
||||||
if config.Host == "" {
|
if config.Host == "" {
|
||||||
switch {
|
switch {
|
||||||
case clientHost != "":
|
case clientIP != "":
|
||||||
config.Host = clientHost
|
config.Host = clientIP
|
||||||
case container.HostConfig.NetworkMode == "host":
|
case container.HostConfig.NetworkMode == "host":
|
||||||
config.Host = "host.docker.internal"
|
config.Host = "host.docker.internal"
|
||||||
case config.LoadBalance == "true", config.LoadBalance == "1":
|
case config.LoadBalance == "true", config.LoadBalance == "1":
|
||||||
|
@ -121,12 +121,12 @@ func (p *Provider) getContainerProxyConfigs(container types.Container, clientHos
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Provider) getDockerProxyConfigs() ([]*ProxyConfig, error) {
|
func (p *Provider) getDockerProxyConfigs() ([]*ProxyConfig, error) {
|
||||||
var clientHost string
|
var clientIP string
|
||||||
var opts []client.Opt
|
var opts []client.Opt
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
if p.Value == clientUrlFromEnv {
|
if p.Value == clientUrlFromEnv {
|
||||||
clientHost = ""
|
clientIP = ""
|
||||||
opts = []client.Opt{
|
opts = []client.Opt{
|
||||||
client.WithHostFromEnv(),
|
client.WithHostFromEnv(),
|
||||||
client.WithAPIVersionNegotiation(),
|
client.WithAPIVersionNegotiation(),
|
||||||
|
@ -136,21 +136,28 @@ func (p *Provider) getDockerProxyConfigs() ([]*ProxyConfig, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to parse docker host url: %v", err)
|
return nil, fmt.Errorf("unable to parse docker host url: %v", err)
|
||||||
}
|
}
|
||||||
clientHost = url.Host
|
clientIP = strings.Split(url.Host, ":")[0]
|
||||||
helper, err := connhelper.GetConnectionHelper(p.Value)
|
helper, err := connhelper.GetConnectionHelper(p.Value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unexpected error: %v", err)
|
return nil, fmt.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
httpClient := &http.Client{
|
if helper != nil {
|
||||||
Transport: &http.Transport{
|
httpClient := &http.Client{
|
||||||
DialContext: helper.Dialer,
|
Transport: &http.Transport{
|
||||||
},
|
DialContext: helper.Dialer,
|
||||||
}
|
},
|
||||||
opts = []client.Opt{
|
}
|
||||||
client.WithHTTPClient(httpClient),
|
opts = []client.Opt{
|
||||||
client.WithHost(helper.Host),
|
client.WithHTTPClient(httpClient),
|
||||||
client.WithAPIVersionNegotiation(),
|
client.WithHost(helper.Host),
|
||||||
client.WithDialContext(helper.Dialer),
|
client.WithAPIVersionNegotiation(),
|
||||||
|
client.WithDialContext(helper.Dialer),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
opts = []client.Opt{
|
||||||
|
client.WithHost(p.Value),
|
||||||
|
client.WithAPIVersionNegotiation(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +174,7 @@ func (p *Provider) getDockerProxyConfigs() ([]*ProxyConfig, error) {
|
||||||
cfgs := make([]*ProxyConfig, 0)
|
cfgs := make([]*ProxyConfig, 0)
|
||||||
|
|
||||||
for _, container := range containerSlice {
|
for _, container := range containerSlice {
|
||||||
cfgs = append(cfgs, p.getContainerProxyConfigs(container, clientHost)...)
|
cfgs = append(cfgs, p.getContainerProxyConfigs(container, clientIP)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return cfgs, nil
|
return cfgs, nil
|
||||||
|
|
Loading…
Add table
Reference in a new issue