package handler import ( "net/http" "net/url" "github.com/docker/docker/client" "github.com/yusing/go-proxy/internal/common" "github.com/yusing/go-proxy/internal/docker" "github.com/yusing/go-proxy/internal/logging" "github.com/yusing/go-proxy/internal/net/gphttp/reverseproxy" ) func serviceUnavailable(w http.ResponseWriter, r *http.Request) { http.Error(w, "docker socket is not available", http.StatusServiceUnavailable) } func DockerSocketHandler() http.HandlerFunc { dockerClient, err := docker.NewClient(common.DockerHostFromEnv) if err != nil { logging.Warn().Err(err).Msg("failed to connect to docker client") return serviceUnavailable } rp := reverseproxy.NewReverseProxy("docker", &url.URL{ Scheme: "http", Host: client.DummyHost, }, dockerClient.HTTPClient().Transport) return rp.ServeHTTP }