package docker import ( "context" "fmt" "log/slog" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) var ( logger = slog.New(slog.NewJSONHandler(os.Stdout, nil)) ) func GetShipStatus(patps []string) (map[string]string, error) { statuses := make(map[string]string) cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation()) if err != nil { errmsg := fmt.Sprintf("Error getting Docker info: %v", err) logger.Error(errmsg) return statuses, err } else { containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{}) if err != nil { errmsg := fmt.Sprintf("Error getting containers: %v", err) logger.Error(errmsg) return statuses, err } else { for _, pier := range patps { found := false for _, container := range containers { for _, name := range container.Names { fasPier := "/" + pier if name == fasPier { statuses[pier] = container.Status found = true break } } if found { break } } if !found { statuses[pier] = "not found" } } } return statuses, nil } }