fix: issues when using socket-proxy

This commit is contained in:
yusing 2025-04-29 23:56:15 +08:00
parent d35afdb3c9
commit 8e3c2cc8d4

View file

@ -93,6 +93,8 @@ func FromDocker(c *container.SummaryTrimmed, dockerHost string) (res *Container)
res.setPrivateHostname(helper) res.setPrivateHostname(helper)
res.setPublicHostname() res.setPublicHostname()
res.loadDeleteIdlewatcherLabels(helper) res.loadDeleteIdlewatcherLabels(helper)
logging.Debug().Bool("is_local", res.isLocal()).Msgf("container %q", res.ContainerName)
return return
} }
@ -126,11 +128,27 @@ func (c *Container) isDatabase() bool {
return false return false
} }
func (c *Container) isLocal() bool {
if strings.HasPrefix(c.DockerHost, "unix://") {
return true
}
url, err := url.Parse(c.DockerHost)
if err != nil {
return false
}
switch url.Hostname() {
case "localhost", "127.0.0.1", "::1":
return true
default:
return false
}
}
func (c *Container) setPublicHostname() { func (c *Container) setPublicHostname() {
if !c.Running { if !c.Running {
return return
} }
if strings.HasPrefix(c.DockerHost, "unix://") { if c.isLocal() {
c.PublicHostname = "127.0.0.1" c.PublicHostname = "127.0.0.1"
return return
} }
@ -144,20 +162,19 @@ func (c *Container) setPublicHostname() {
} }
func (c *Container) setPrivateHostname(helper containerHelper) { func (c *Container) setPrivateHostname(helper containerHelper) {
if !strings.HasPrefix(c.DockerHost, "unix://") && c.Agent == nil { if !c.isLocal() && c.Agent == nil {
return return
} }
if helper.NetworkSettings == nil { if helper.NetworkSettings == nil {
return return
} }
for _, v := range helper.NetworkSettings.Networks { for _, v := range helper.NetworkSettings.Networks {
if v.IPAddress == "" { if v.IPAddress != "" {
continue
}
c.PrivateHostname = v.IPAddress c.PrivateHostname = v.IPAddress
return return
} }
} }
}
func (c *Container) loadDeleteIdlewatcherLabels(helper containerHelper) { func (c *Container) loadDeleteIdlewatcherLabels(helper containerHelper) {
cfg := map[string]any{ cfg := map[string]any{