docker provider fix test

This commit is contained in:
yusing 2024-03-11 16:51:03 +00:00
parent 2aa7c22011
commit 76d2cc2871
2 changed files with 25 additions and 18 deletions

Binary file not shown.

View file

@ -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,11 +136,12 @@ 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)
} }
if helper != nil {
httpClient := &http.Client{ httpClient := &http.Client{
Transport: &http.Transport{ Transport: &http.Transport{
DialContext: helper.Dialer, DialContext: helper.Dialer,
@ -152,6 +153,12 @@ func (p *Provider) getDockerProxyConfigs() ([]*ProxyConfig, error) {
client.WithAPIVersionNegotiation(), client.WithAPIVersionNegotiation(),
client.WithDialContext(helper.Dialer), client.WithDialContext(helper.Dialer),
} }
} else {
opts = []client.Opt{
client.WithHost(p.Value),
client.WithAPIVersionNegotiation(),
}
}
} }
p.dockerClient, err = client.NewClientWithOpts(opts...) p.dockerClient, err = client.NewClientWithOpts(opts...)
@ -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