databases without explicit alias(es) are now excluded by default

This commit is contained in:
yusing 2024-10-04 09:17:45 +08:00
parent e8f4cd18a4
commit 9c3edff92b
4 changed files with 35 additions and 3 deletions

View file

@ -4,7 +4,6 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/sirupsen/logrus"
"github.com/yusing/go-proxy/internal/common" "github.com/yusing/go-proxy/internal/common"
H "github.com/yusing/go-proxy/internal/homepage" H "github.com/yusing/go-proxy/internal/homepage"
PR "github.com/yusing/go-proxy/internal/proxy/provider" PR "github.com/yusing/go-proxy/internal/proxy/provider"
@ -55,8 +54,6 @@ func (cfg *Config) HomepageConfig() H.HomePageConfig {
} }
} }
logrus.Debugf("%s isexplicit: %v, explicitonly: %v", r, r.Entry().IsExplicit, p.IsExplicitOnly())
item := entry.Homepage item := entry.Homepage
if !item.Show && !item.IsEmpty() { if !item.Show && !item.IsEmpty() {

View file

@ -28,6 +28,7 @@ func FromDocker(c *types.Container, dockerHost string) (res Container) {
Aliases: res.getAliases(), Aliases: res.getAliases(),
IsExcluded: U.ParseBool(res.getDeleteLabel(LabelExclude)), IsExcluded: U.ParseBool(res.getDeleteLabel(LabelExclude)),
IsExplicit: isExplicit, IsExplicit: isExplicit,
IsDatabase: res.isDatabase(),
IdleTimeout: res.getDeleteLabel(LabelIdleTimeout), IdleTimeout: res.getDeleteLabel(LabelIdleTimeout),
WakeTimeout: res.getDeleteLabel(LabelWakeTimeout), WakeTimeout: res.getDeleteLabel(LabelWakeTimeout),
StopMethod: res.getDeleteLabel(LabelStopMethod), StopMethod: res.getDeleteLabel(LabelStopMethod),
@ -108,3 +109,35 @@ func (c Container) getPrivatePortMapping() PortMapping {
} }
return res return res
} }
var databaseMPs = map[string]struct{}{
"/var/lib/postgresql/data": {},
"/var/lib/mysql": {},
"/var/lib/mongodb": {},
"/var/lib/mariadb": {},
"/var/lib/memcached": {},
"/var/lib/rabbitmq": {},
}
var databasePrivPorts = map[uint16]struct{}{
5432: {}, // postgres
3306: {}, // mysql, mariadb
6379: {}, // redis
11211: {}, // memcached
27017: {}, // mongodb
}
func (c Container) isDatabase() bool {
for _, m := range c.Container.Mounts {
if _, ok := databaseMPs[m.Destination]; ok {
return true
}
}
for _, v := range c.Ports {
if _, ok := databasePrivPorts[v.PrivatePort]; ok {
return true
}
}
return false
}

View file

@ -15,6 +15,7 @@ type ProxyProperties struct {
Aliases []string `yaml:"-" json:"aliases"` Aliases []string `yaml:"-" json:"aliases"`
IsExcluded bool `yaml:"-" json:"is_excluded"` IsExcluded bool `yaml:"-" json:"is_excluded"`
IsExplicit bool `yaml:"-" json:"is_explicit"` IsExplicit bool `yaml:"-" json:"is_explicit"`
IsDatabase bool `yaml:"-" json:"is_database"`
IdleTimeout string `yaml:"-" json:"idle_timeout"` IdleTimeout string `yaml:"-" json:"idle_timeout"`
WakeTimeout string `yaml:"-" json:"wake_timeout"` WakeTimeout string `yaml:"-" json:"wake_timeout"`
StopMethod string `yaml:"-" json:"stop_method"` StopMethod string `yaml:"-" json:"stop_method"`

View file

@ -83,6 +83,7 @@ func (p *DockerProvider) LoadRoutesImpl() (routes R.Routes, err E.NestedError) {
func (p *DockerProvider) shouldIgnore(container D.Container) bool { func (p *DockerProvider) shouldIgnore(container D.Container) bool {
return container.IsExcluded || return container.IsExcluded ||
!container.IsExplicit && p.ExplicitOnly || !container.IsExplicit && p.ExplicitOnly ||
!container.IsExplicit && container.IsDatabase ||
strings.HasSuffix(container.ContainerName, "-old") strings.HasSuffix(container.ContainerName, "-old")
} }