package infra import ( "fmt" ) // StopApp para y elimina el contenedor de una app desplegada. // Si removeImage es true, elimina tambiƩn la imagen Docker asociada. // containerName debe coincidir con el nombre usado en DeployApp (= imageName). func StopApp(containerName string, removeImage bool) error { // 1. Detener el contenedor (timeout 10s) if err := DockerStopContainer(containerName, 10); err != nil { return fmt.Errorf("stop_app: detener contenedor %s: %w", containerName, err) } // 2. Eliminar el contenedor if err := DockerRemoveContainer(containerName, false); err != nil { return fmt.Errorf("stop_app: eliminar contenedor %s: %w", containerName, err) } // 3. Eliminar la imagen si se solicita if removeImage { imageName := containerName + ":latest" if err := DockerRemoveImage(imageName, false); err != nil { return fmt.Errorf("stop_app: eliminar imagen %s: %w", imageName, err) } } return nil }