diff --git a/app/Actions/Application/StopApplication.php b/app/Actions/Application/StopApplication.php index fcf1e1d0f..12ac56900 100644 --- a/app/Actions/Application/StopApplication.php +++ b/app/Actions/Application/StopApplication.php @@ -44,8 +44,6 @@ public function handle(Application $application, bool $previewDeployments = fals $commands = [dockerStopCommand($timeout, $containerName, $server)]; if ($removeContainers) { $commands[] = "docker rm -f $containerName"; - } else { - array_unshift($commands, "docker update --restart=no $containerName"); } instant_remote_process(command: $commands, server: $server, throwError: false); diff --git a/app/Actions/Application/StopApplicationPreview.php b/app/Actions/Application/StopApplicationPreview.php index af5f3fc0f..8bb3a3dc0 100644 --- a/app/Actions/Application/StopApplicationPreview.php +++ b/app/Actions/Application/StopApplicationPreview.php @@ -20,8 +20,6 @@ public function handle(ApplicationPreview $preview, bool $resetRestartCount = tr $commands = [dockerStopCommand($application->settings->stopGracePeriodSeconds(), $containerName, $server)]; if ($removeContainer) { $commands[] = "docker rm -f $containerName"; - } else { - array_unshift($commands, "docker update --restart=no $containerName"); } instant_remote_process($commands, $server, false); } diff --git a/app/Actions/Database/StopDatabase.php b/app/Actions/Database/StopDatabase.php index 8005311b5..d3c6fafc4 100644 --- a/app/Actions/Database/StopDatabase.php +++ b/app/Actions/Database/StopDatabase.php @@ -62,8 +62,6 @@ private function stopContainer(BaseModel $database, string $containerName, int $ $commands = [dockerStopCommand($timeout, $containerName, $server)]; if ($removeContainer) { $commands[] = "docker rm -f $containerName"; - } else { - array_unshift($commands, "docker update --restart=no $containerName"); } instant_remote_process(command: $commands, server: $server, throwError: false); } diff --git a/app/Actions/Service/StopServiceApplication.php b/app/Actions/Service/StopServiceApplication.php index 11ad337ed..1b5347265 100644 --- a/app/Actions/Service/StopServiceApplication.php +++ b/app/Actions/Service/StopServiceApplication.php @@ -22,10 +22,7 @@ public function handle(ServiceApplication|ServiceDatabase $serviceApplication, b if ($removeContainer) { $commands = ["docker rm -f {$containerName}"]; } else { - $commands = [ - "docker update --restart=no {$containerName}", - "docker stop {$containerName}", - ]; + $commands = ["docker stop {$containerName}"]; } instant_remote_process($commands, $server, throwError: ! $removeContainer); diff --git a/tests/Feature/ApplicationStoppedAfterRestartLimitTest.php b/tests/Feature/ApplicationStoppedAfterRestartLimitTest.php index 58ebb8c70..f5875adb2 100644 --- a/tests/Feature/ApplicationStoppedAfterRestartLimitTest.php +++ b/tests/Feature/ApplicationStoppedAfterRestartLimitTest.php @@ -126,7 +126,7 @@ function applicationWithRestartState(array $attributes = []): Application expect($removeContainers)->not->toBeNull() ->and($removeContainers->getDefaultValue())->toBeTrue() - ->and($action)->toContain('docker update --restart=no') + ->and($action)->not->toContain('docker update --restart=no') ->and($action)->toContain('if ($removeContainers)'); }); diff --git a/tests/Unit/StopActionsPersistStatusTest.php b/tests/Unit/StopActionsPersistStatusTest.php index 67a7a8c6f..a6d8d2fc1 100644 --- a/tests/Unit/StopActionsPersistStatusTest.php +++ b/tests/Unit/StopActionsPersistStatusTest.php @@ -6,6 +6,17 @@ expect($action)->toContain("'status' => 'exited'"); }); +it('does not change Docker restart policies when retaining stopped containers', function (string $actionPath) { + $action = file_get_contents(__DIR__.'/../../'.$actionPath); + + expect($action)->not->toContain('docker update --restart=no'); +})->with([ + 'applications' => 'app/Actions/Application/StopApplication.php', + 'application previews' => 'app/Actions/Application/StopApplicationPreview.php', + 'service applications' => 'app/Actions/Service/StopServiceApplication.php', + 'standalone databases' => 'app/Actions/Database/StopDatabase.php', +]); + it('persists exited status for every full application stop path', function () { $action = file_get_contents(__DIR__.'/../../app/Actions/Application/StopApplication.php');