Skip to content
This repository was archived by the owner on Nov 27, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion local/compose/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ func (s *composeService) doBuild(ctx context.Context, project *types.Project, op
for _, c := range observedState {
for imageName := range opts {
if c.Image == imageName {
err = s.removeContainers(ctx, cw, []moby.Container{c}, nil)
err = s.removeContainers(ctx, cw, []moby.Container{c}, nil, false)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion local/compose/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func (s *composeService) create(ctx context.Context, project *types.Project, opt
if len(orphans) > 0 {
if options.RemoveOrphans {
w := progress.ContextWriter(ctx)
err := s.removeContainers(ctx, w, orphans, nil)
err := s.removeContainers(ctx, w, orphans, nil, false)
if err != nil {
return err
}
Expand Down
11 changes: 7 additions & 4 deletions local/compose/down.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func (s *composeService) down(ctx context.Context, projectName string, options c

err = InReverseDependencyOrder(ctx, options.Project, func(c context.Context, service types.ServiceConfig) error {
serviceContainers := containers.filter(isService(service.Name))
err := s.removeContainers(ctx, w, serviceContainers, options.Timeout)
err := s.removeContainers(ctx, w, serviceContainers, options.Timeout, options.Volumes)
return err
})
if err != nil {
Expand All @@ -75,7 +75,7 @@ func (s *composeService) down(ctx context.Context, projectName string, options c

orphans := containers.filter(isNotService(options.Project.ServiceNames()...))
if options.RemoveOrphans && len(orphans) > 0 {
err := s.removeContainers(ctx, w, orphans, options.Timeout)
err := s.removeContainers(ctx, w, orphans, options.Timeout, false)
if err != nil {
return err
}
Expand Down Expand Up @@ -215,7 +215,7 @@ func (s *composeService) stopContainers(ctx context.Context, w progress.Writer,
return eg.Wait()
}

func (s *composeService) removeContainers(ctx context.Context, w progress.Writer, containers []moby.Container, timeout *time.Duration) error {
func (s *composeService) removeContainers(ctx context.Context, w progress.Writer, containers []moby.Container, timeout *time.Duration, volumes bool) error {
eg, _ := errgroup.WithContext(ctx)
for _, container := range containers {
toDelete := container
Expand All @@ -228,7 +228,10 @@ func (s *composeService) removeContainers(ctx context.Context, w progress.Writer
return err
}
w.Event(progress.RemovingEvent(eventName))
err = s.apiClient.ContainerRemove(ctx, toDelete.ID, moby.ContainerRemoveOptions{Force: true})
err = s.apiClient.ContainerRemove(ctx, toDelete.ID, moby.ContainerRemoveOptions{
Force: true,
RemoveVolumes: volumes,
})
if err != nil {
w.Event(progress.ErrorMessageEvent(eventName, "Error while Removing"))
return err
Expand Down
2 changes: 1 addition & 1 deletion local/compose/down_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func TestDownRemoveVolumes(t *testing.T) {
[]apitypes.Container{testContainer("service1", "123")}, nil)

api.EXPECT().ContainerStop(gomock.Any(), "123", nil).Return(nil)
api.EXPECT().ContainerRemove(gomock.Any(), "123", apitypes.ContainerRemoveOptions{Force: true}).Return(nil)
api.EXPECT().ContainerRemove(gomock.Any(), "123", apitypes.ContainerRemoveOptions{Force: true, RemoveVolumes: true}).Return(nil)

api.EXPECT().NetworkList(gomock.Any(), apitypes.NetworkListOptions{Filters: filters.NewArgs(projectFilter(testProject))}).Return(nil, nil)

Expand Down