feat(ui): sidebar kontainer + panel detail (ListContainers, navigasi j/k, klik pilih, refresh r)
CI / test (push) Successful in 21s

This commit is contained in:
oxpoe committed 2026-10-15 09:31:39 +07:00
1 parent 18055979da
commit fe781591e3
4 files changed
+336 -42

No files matched your search

+38
View File
@@ -5,7 +5,9 @@ package docker
import (
"context"
"fmt"
"strings"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/client"
)
@@ -60,3 +62,39 @@ func (c *Client) Ping(ctx context.Context) error {
}
return nil
}
// Container — ringkasan kontainer untuk sidebar/dashboard.
type Container struct {
ID string
Name string
Image string
State string // running, exited, paused, restarting, created, dead
Status string // "Up 2 hours (healthy)"
}
// ListContainers mengembalikan semua kontainer (termasuk yang berhenti).
func (c *Client) ListContainers(ctx context.Context) ([]Container, error) {
list, err := c.cli.ContainerList(ctx, container.ListOptions{All: true})
if err != nil {
return nil, fmt.Errorf("docker: daftar kontainer: %w", err)
}
out := make([]Container, 0, len(list))
for _, ct := range list {
name := ""
if len(ct.Names) > 0 {
name = strings.TrimPrefix(ct.Names[0], "/")
}
id := ct.ID
if len(id) > 12 {
id = id[:12]
}
out = append(out, Container{
ID: id,
Name: name,
Image: ct.Image,
State: ct.State,
Status: ct.Status,
})
}
return out, nil
}