From e784853b9e2c5577d9cc14998609734e555b24b2 Mon Sep 17 00:00:00 2001 From: Alexis ANNEIX Date: Tue, 6 Feb 2024 14:56:32 +0100 Subject: [PATCH] Filter containers by project name if provided --- pkg/commands/docker.go | 7 ++++++- pkg/config/app_config.go | 2 ++ pkg/gui/project_panel.go | 15 +++++++++------ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/pkg/commands/docker.go b/pkg/commands/docker.go index e96c9653..46ae136c 100644 --- a/pkg/commands/docker.go +++ b/pkg/commands/docker.go @@ -16,6 +16,7 @@ import ( ddocker "github.com/docker/cli/cli/context/docker" ctxstore "github.com/docker/cli/cli/context/store" dockerTypes "github.com/docker/docker/api/types" + dockerFilters "github.com/docker/docker/api/types/filters" "github.com/docker/docker/client" "github.com/imdario/mergo" "github.com/jesseduffield/lazydocker/pkg/commands/ssh" @@ -199,7 +200,11 @@ func (c *DockerCommand) GetContainers(existingContainers []*Container) ([]*Conta c.ContainerMutex.Lock() defer c.ContainerMutex.Unlock() - containers, err := c.Client.ContainerList(context.Background(), dockerTypes.ContainerListOptions{All: true}) + filters := dockerFilters.NewArgs() + if c.Config.ProjectName != "" { + filters.Add("label", "com.docker.compose.project="+c.Config.ProjectName) + } + containers, err := c.Client.ContainerList(context.Background(), dockerTypes.ContainerListOptions{All: true, Filters: filters}) if err != nil { return nil, err } diff --git a/pkg/config/app_config.go b/pkg/config/app_config.go index 1336df41..7de98407 100644 --- a/pkg/config/app_config.go +++ b/pkg/config/app_config.go @@ -484,6 +484,7 @@ type AppConfig struct { UserConfig *UserConfig ConfigDir string ProjectDir string + ProjectName string } // NewAppConfig makes a new app config @@ -516,6 +517,7 @@ func NewAppConfig(name, version, commit, date string, buildSource string, debugg UserConfig: userConfig, ConfigDir: configDir, ProjectDir: projectDir, + ProjectName: projectName, } return appConfig, nil diff --git a/pkg/gui/project_panel.go b/pkg/gui/project_panel.go index 32c5ad99..be374155 100644 --- a/pkg/gui/project_panel.go +++ b/pkg/gui/project_panel.go @@ -78,12 +78,15 @@ func (gui *Gui) refreshProject() error { } func (gui *Gui) getProjectName() string { - projectName := path.Base(gui.Config.ProjectDir) - if gui.DockerCommand.InDockerComposeProject { - for _, service := range gui.Panels.Services.List.GetAllItems() { - container := service.Container - if container != nil && container.DetailsLoaded() { - return container.Details.Config.Labels["com.docker.compose.project"] + projectName := gui.Config.ProjectName + if projectName == "" { + projectName = path.Base(gui.Config.ProjectDir) + if gui.DockerCommand.InDockerComposeProject { + for _, service := range gui.Panels.Services.List.GetAllItems() { + container := service.Container + if container != nil && container.DetailsLoaded() { + return container.Details.Config.Labels["com.docker.compose.project"] + } } } }