Skip to content

Commit 0375798

Browse files
committed
Merge branch '229-clean-up-container-volumes' into 'master'
fix: clean up volumes on container destroy (#229) Closes #229 See merge request postgres-ai/database-lab!244
2 parents 41adec7 + 2e6f075 commit 0375798

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

pkg/retrieval/engine/postgres/tools/cont/container.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,10 @@ func StopControlContainers(ctx context.Context, dockerClient *client.Client, ins
8080

8181
log.Msg("Removing control container:", containerName)
8282

83-
if err := dockerClient.ContainerRemove(ctx, controlCont.ID, types.ContainerRemoveOptions{Force: true}); err != nil {
83+
if err := dockerClient.ContainerRemove(ctx, controlCont.ID, types.ContainerRemoveOptions{
84+
RemoveVolumes: true,
85+
Force: true,
86+
}); err != nil {
8487
return err
8588
}
8689
}
@@ -100,7 +103,10 @@ func CleanUpControlContainers(ctx context.Context, dockerClient *client.Client,
100103
for _, controlCont := range list {
101104
log.Msg("Removing control container:", getControlContainerName(controlCont))
102105

103-
if err := dockerClient.ContainerRemove(ctx, controlCont.ID, types.ContainerRemoveOptions{Force: true}); err != nil {
106+
if err := dockerClient.ContainerRemove(ctx, controlCont.ID, types.ContainerRemoveOptions{
107+
RemoveVolumes: true,
108+
Force: true,
109+
}); err != nil {
104110
return err
105111
}
106112
}

pkg/retrieval/engine/postgres/tools/tools.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,7 @@ func DetectPGVersion(dataDir string) (float64, error) {
101101
}
102102

103103
// AddVolumesToHostConfig adds volumes to container host configuration depends on process environment.
104-
func AddVolumesToHostConfig(ctx context.Context, dockerClient *client.Client, hostConfig *container.HostConfig,
105-
dataDir string) error {
104+
func AddVolumesToHostConfig(ctx context.Context, docker *client.Client, hostConfig *container.HostConfig, dataDir string) error {
106105
hostInfo, err := host.Info()
107106
if err != nil {
108107
return errors.Wrap(err, "failed to get host info")
@@ -111,7 +110,7 @@ func AddVolumesToHostConfig(ctx context.Context, dockerClient *client.Client, ho
111110
log.Dbg("Virtualization system: ", hostInfo.VirtualizationSystem)
112111

113112
if hostInfo.VirtualizationRole == "guest" {
114-
inspection, err := dockerClient.ContainerInspect(ctx, hostInfo.Hostname)
113+
inspection, err := docker.ContainerInspect(ctx, hostInfo.Hostname)
115114
if err != nil {
116115
return err
117116
}
@@ -254,7 +253,10 @@ func RemoveContainer(ctx context.Context, dockerClient *client.Client, container
254253

255254
log.Msg(fmt.Sprintf("Container %q has been stopped", containerID))
256255

257-
if err := dockerClient.ContainerRemove(ctx, containerID, types.ContainerRemoveOptions{Force: true}); err != nil {
256+
if err := dockerClient.ContainerRemove(ctx, containerID, types.ContainerRemoveOptions{
257+
RemoveVolumes: true,
258+
Force: true,
259+
}); err != nil {
258260
log.Err("Failed to remove container: ", err)
259261

260262
return

pkg/services/provision/docker/docker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func StopContainer(r runners.Runner, c *resources.AppConfig) (string, error) {
141141

142142
// RemoveContainer removes specified container.
143143
func RemoveContainer(r runners.Runner, cloneName string) (string, error) {
144-
dockerRemoveCmd := "docker container rm --force " + cloneName
144+
dockerRemoveCmd := "docker container rm --force --volumes " + cloneName
145145

146146
return r.Run(dockerRemoveCmd, true)
147147
}

0 commit comments

Comments
 (0)