mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-21 23:01:03 +00:00
fixing crashes
This commit is contained in:
parent
93748467eb
commit
c435185fed
1 changed files with 27 additions and 13 deletions
|
|
@ -200,11 +200,7 @@ func (c *DockerCommand) RefreshContainersAndServices() error {
|
|||
|
||||
currentServices := c.Services
|
||||
|
||||
containers, err := c.GetContainers()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var err error
|
||||
var services []*Service
|
||||
// we only need to get these services once because they won't change in the runtime of the program
|
||||
if currentServices != nil {
|
||||
|
|
@ -216,10 +212,12 @@ func (c *DockerCommand) RefreshContainersAndServices() error {
|
|||
}
|
||||
}
|
||||
|
||||
var displayContainers = containers
|
||||
var containers []*Container
|
||||
var displayContainers []*Container
|
||||
|
||||
if c.InDockerComposeProject {
|
||||
var standaloneContainers, err = c.assignContainersToServices(containers, services)
|
||||
var standaloneContainers []*Container
|
||||
standaloneContainers, containers, err = c.assignContainersToServices(services)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -227,6 +225,12 @@ func (c *DockerCommand) RefreshContainersAndServices() error {
|
|||
if !c.Config.UserConfig.Gui.ShowAllContainers {
|
||||
displayContainers = standaloneContainers
|
||||
}
|
||||
} else {
|
||||
containers, err = c.GetContainers()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
displayContainers = containers
|
||||
}
|
||||
|
||||
// sort services first by whether they have a linked container, and second by alphabetical order
|
||||
|
|
@ -249,12 +253,17 @@ func (c *DockerCommand) RefreshContainersAndServices() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (c *DockerCommand) assignContainersToServices(containers []*Container, services []*Service) ([]*Container, error) {
|
||||
func (c *DockerCommand) assignContainersToServices(services []*Service) ([]*Container, []*Container, error) {
|
||||
// Get a list of the Container IDs for this Docker Compose project.
|
||||
composeCommand := c.Config.UserConfig.CommandTemplates.DockerCompose
|
||||
output, err := c.OSCommand.RunCommandWithOutput(fmt.Sprintf("%s ps -q", composeCommand))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
containers, err := c.GetContainers()
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// Create an index for Container IDs to make lookups less expensive.
|
||||
|
|
@ -273,9 +282,14 @@ func (c *DockerCommand) assignContainersToServices(containers []*Container, serv
|
|||
|
||||
// Walk the list of Containers, categorizing them as either associated with a
|
||||
// Service or as standalone.
|
||||
serviceContainerCount := len(serviceContainerIds)
|
||||
standaloneContainerCount := len(containers) - serviceContainerCount
|
||||
standaloneContainers := make([]*Container, 0, standaloneContainerCount)
|
||||
|
||||
// source of truth is the containers variable because it's the fastest, and the latest
|
||||
// we don't want to compare the lengths, we want to compare the members of each group and see which ones are actually standalone.
|
||||
|
||||
// serviceContainerCount := len(serviceContainerIds)
|
||||
// standaloneContainerCount := len(containers) - serviceContainerCount
|
||||
// standaloneContainers := make([]*Container, 0, standaloneContainerCount)
|
||||
standaloneContainers := []*Container{}
|
||||
for _, container := range containers {
|
||||
if !container.OneOff && serviceContainerIds[container.ID] {
|
||||
service := serviceMap[container.ServiceName]
|
||||
|
|
@ -285,7 +299,7 @@ func (c *DockerCommand) assignContainersToServices(containers []*Container, serv
|
|||
}
|
||||
}
|
||||
|
||||
return standaloneContainers, nil
|
||||
return standaloneContainers, containers, nil
|
||||
}
|
||||
|
||||
// filterOutExited filters out the exited containers if c.ShowExited is false
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue