diff --git a/internal/docker/client.go b/internal/docker/client.go index cac1ca16..a1ac7612 100644 --- a/internal/docker/client.go +++ b/internal/docker/client.go @@ -2,7 +2,6 @@ package docker import ( "context" - "errors" "fmt" "maps" "net" @@ -17,7 +16,6 @@ import ( "github.com/moby/moby/client" "github.com/rs/zerolog/log" "github.com/yusing/godoxy/agent/pkg/agent" - "github.com/yusing/godoxy/internal/common" "github.com/yusing/godoxy/internal/types" httputils "github.com/yusing/goutils/http" "github.com/yusing/goutils/task" @@ -118,7 +116,7 @@ func Clients() map[string]*SharedClient { // Returns existing client if available. // // Parameters: -// - host: the host to connect to (either a URL or common.DockerHostFromEnv). +// - host: the host to connect to (either a URL or client.DefaultDockerHost). // // Returns: // - Client: the Docker client connection. @@ -161,27 +159,18 @@ func NewClient(cfg types.DockerProviderConfig, unique ...bool) (*SharedClient, e addr = "tcp://" + cfg.Addr dial = cfg.DialContext } else { - switch host { - case "": - return nil, errors.New("empty docker host") - case common.DockerHostFromEnv: + helper, err := connhelper.GetConnectionHelper(host) + if err != nil { + log.Panic().Err(err).Msg("failed to get connection helper") + } + if helper != nil { opt = []client.Opt{ - client.WithHostFromEnv(), + client.WithHost(helper.Host), + client.WithDialContext(helper.Dialer), } - default: - helper, err := connhelper.GetConnectionHelper(host) - if err != nil { - log.Panic().Err(err).Msg("failed to get connection helper") - } - if helper != nil { - opt = []client.Opt{ - client.WithHost(helper.Host), - client.WithDialContext(helper.Dialer), - } - } else { - opt = []client.Opt{ - client.WithHost(host), - } + } else { + opt = []client.Opt{ + client.WithHost(host), } } } diff --git a/internal/route/provider/provider.go b/internal/route/provider/provider.go index 6d4dd277..aee257a7 100644 --- a/internal/route/provider/provider.go +++ b/internal/route/provider/provider.go @@ -8,17 +8,14 @@ import ( "sync" "time" - "github.com/moby/moby/client" "github.com/rs/zerolog" "github.com/yusing/godoxy/agent/pkg/agent" - "github.com/yusing/godoxy/internal/common" "github.com/yusing/godoxy/internal/docker" "github.com/yusing/godoxy/internal/route" provider "github.com/yusing/godoxy/internal/route/provider/types" "github.com/yusing/godoxy/internal/types" W "github.com/yusing/godoxy/internal/watcher" "github.com/yusing/godoxy/internal/watcher/events" - "github.com/yusing/goutils/env" gperr "github.com/yusing/goutils/errs" "github.com/yusing/goutils/task" ) @@ -70,10 +67,6 @@ func NewFileProvider(filename string) (p *Provider, err error) { } func NewDockerProvider(name string, dockerCfg types.DockerProviderConfig) *Provider { - if dockerCfg.URL == common.DockerHostFromEnv { - dockerCfg.URL = env.GetEnvString("DOCKER_HOST", client.DefaultDockerHost) - } - p := newProvider(provider.ProviderTypeDocker) p.ProviderImpl = DockerProviderImpl(name, dockerCfg) p.watcher = p.NewWatcher() diff --git a/internal/types/docker_provider_config.go b/internal/types/docker_provider_config.go index 9796f7ab..5b78ba31 100644 --- a/internal/types/docker_provider_config.go +++ b/internal/types/docker_provider_config.go @@ -10,6 +10,7 @@ import ( "github.com/yusing/godoxy/internal/common" "github.com/yusing/godoxy/internal/serialization" + "github.com/yusing/goutils/env" gperr "github.com/yusing/goutils/errs" ) @@ -36,6 +37,11 @@ func (cfg *DockerProviderConfig) MarshalJSON() ([]byte, error) { } func (cfg *DockerProviderConfig) Parse(value string) error { + if value == common.DockerHostFromEnv { + cfg.URL = env.GetEnvString("DOCKER_HOST", "unix:///var/run/docker.sock") + return nil + } + u, err := url.Parse(value) if err != nil { return err