Browse Source

Fixed race when down with multiple containers for one service

Signed-off-by: Guillaume Tardif <[email protected]>
Guillaume Tardif 5 years ago
parent
commit
dc211b178a
1 changed files with 4 additions and 3 deletions
  1. 4 3
      local/compose/down.go

+ 4 - 3
local/compose/down.go

@@ -91,16 +91,17 @@ func (s *composeService) Down(ctx context.Context, projectName string, options c
 
 func (s *composeService) removeContainers(ctx context.Context, w progress.Writer, eg *errgroup.Group, containers []moby.Container) error {
 	for _, container := range containers {
+		toDelete := container
 		eg.Go(func() error {
-			eventName := "Container " + getContainerName(container)
+			eventName := "Container " + getContainerName(toDelete)
 			w.Event(progress.StoppingEvent(eventName))
-			err := s.apiClient.ContainerStop(ctx, container.ID, nil)
+			err := s.apiClient.ContainerStop(ctx, toDelete.ID, nil)
 			if err != nil {
 				w.Event(progress.ErrorMessageEvent(eventName, "Error while Stopping"))
 				return err
 			}
 			w.Event(progress.RemovingEvent(eventName))
-			err = s.apiClient.ContainerRemove(ctx, container.ID, moby.ContainerRemoveOptions{})
+			err = s.apiClient.ContainerRemove(ctx, toDelete.ID, moby.ContainerRemoveOptions{})
 			if err != nil {
 				w.Event(progress.ErrorMessageEvent(eventName, "Error while Removing"))
 				return err