added some docker compose examples; fixed defaults to wrong host; updated watcher behavior to retry connection every 3 secs until success or until cancelled

This commit is contained in:
yusing
2024-09-22 04:00:08 +08:00
parent 6388d9d44d
commit a11ce46028
8 changed files with 119 additions and 15 deletions

View File

@@ -21,9 +21,8 @@ type Client struct {
}
func ParseDockerHostname(host string) (string, E.NestedError) {
if host == common.DockerHostFromEnv {
return host, nil
} else if host == "" {
switch host {
case common.DockerHostFromEnv, "":
return "localhost", nil
}
url, err := E.Check(client.ParseHostURL(host))

View File

@@ -2,6 +2,7 @@ package watcher
import (
"context"
"fmt"
"time"
docker_events "github.com/docker/docker/api/types/events"
@@ -59,19 +60,28 @@ func (w DockerWatcher) EventsWithOptions(ctx context.Context, options DockerList
defer close(eventCh)
defer close(errCh)
defer func() {
if w.client.Connected() {
w.client.Close()
}
}()
if !w.client.Connected() {
var err E.NestedError
for range 3 {
for {
w.client, err = D.ConnectClient(w.host)
attempts := 0
if err != nil {
defer w.client.Close()
break
}
time.Sleep(1 * time.Second)
}
if err.HasError() {
errCh <- E.FailWith("docker connection", err)
return
attempts++
errCh <- E.FailWith(fmt.Sprintf("docker connection attempt #%d", attempts), err)
select {
case <-ctx.Done():
return
default:
time.Sleep(3 * time.Second)
}
}
}