37 lines
1.4 KiB
PHP
37 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Actions\Server;
|
|
|
|
use App\Models\Server;
|
|
use Lorisleiva\Actions\Concerns\AsAction;
|
|
|
|
class CleanupDocker
|
|
{
|
|
use AsAction;
|
|
|
|
public function handle(Server $server, bool $force = true)
|
|
{
|
|
|
|
// cleanup docker images, containers, and builder caches
|
|
if ($force) {
|
|
instant_remote_process(['docker image prune -af'], $server, false);
|
|
instant_remote_process(['docker container prune -f --filter "label=coolify.managed=true"'], $server, false);
|
|
instant_remote_process(['docker builder prune -af'], $server, false);
|
|
} else {
|
|
instant_remote_process(['docker image prune -f'], $server, false);
|
|
instant_remote_process(['docker container prune -f --filter "label=coolify.managed=true"'], $server, false);
|
|
instant_remote_process(['docker builder prune -f'], $server, false);
|
|
}
|
|
// cleanup networks
|
|
$networks = collectDockerNetworksByServer($server);
|
|
$proxyNetworks = collectProxyDockerNetworksByServer($server);
|
|
$diff = $proxyNetworks->diff($networks);
|
|
if ($diff->count() > 0) {
|
|
$diff->map(function ($network) use ($server) {
|
|
instant_remote_process(["docker network disconnect $network coolify-proxy"], $server);
|
|
instant_remote_process(["docker network rm $network"], $server);
|
|
});
|
|
}
|
|
}
|
|
}
|