fix: cleanup docker images
This commit is contained in:
parent
f38a9f36a1
commit
712151aa80
@ -3,8 +3,8 @@
|
||||
namespace App\Console;
|
||||
|
||||
use App\Jobs\InstanceAutoUpdateJob;
|
||||
use App\Jobs\InstanceProxyCheckJob;
|
||||
use App\Jobs\InstanceDockerCleanupJob;
|
||||
use App\Jobs\ProxyCheckJob;
|
||||
use App\Jobs\DockerCleanupJob;
|
||||
use Illuminate\Console\Scheduling\Schedule;
|
||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||
|
||||
@ -14,12 +14,13 @@ protected function schedule(Schedule $schedule): void
|
||||
{
|
||||
if (isDev()) {
|
||||
$schedule->command('horizon:snapshot')->everyMinute();
|
||||
// $schedule->job(new InstanceDockerCleanupJob)->everyMinute();
|
||||
// $schedule->job(new DockerCleanupJob)->everyMinute();
|
||||
// $schedule->job(new InstanceAutoUpdateJob(true))->everyMinute();
|
||||
} else {
|
||||
$schedule->command('horizon:snapshot')->everyFiveMinutes();
|
||||
$schedule->job(new InstanceDockerCleanupJob)->everyFiveMinutes();
|
||||
$schedule->job(new InstanceProxyCheckJob)->everyFiveMinutes();
|
||||
$schedule->job(new DockerCleanupJob)->everyFiveMinutes();
|
||||
|
||||
$schedule->job(new ProxyCheckJob)->everyFiveMinutes();
|
||||
$schedule->job(new InstanceAutoUpdateJob)->everyTenMinutes();
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace App\Http\Livewire\Settings;
|
||||
|
||||
use App\Jobs\InstanceProxyCheckJob;
|
||||
use App\Jobs\ProxyCheckJob;
|
||||
use App\Models\InstanceSettings as ModelsInstanceSettings;
|
||||
use App\Models\Server;
|
||||
use Livewire\Component;
|
||||
@ -138,7 +138,7 @@ public function submit()
|
||||
$this->server = Server::findOrFail(0);
|
||||
$this->setup_instance_fqdn();
|
||||
if ($this->settings->fqdn) {
|
||||
dispatch(new InstanceProxyCheckJob());
|
||||
dispatch(new ProxyCheckJob());
|
||||
}
|
||||
$this->emit('success', 'Instance settings updated successfully!');
|
||||
}
|
||||
|
52
app/Jobs/DockerCleanupJob.php
Normal file
52
app/Jobs/DockerCleanupJob.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Models\Server;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class DockerCleanupJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
public $timeout = 500;
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
try {
|
||||
$servers = Server::all();
|
||||
foreach ($servers as $server) {
|
||||
if (isDev()) {
|
||||
$docker_root_filesystem = "/";
|
||||
} else {
|
||||
$docker_root_filesystem = instant_remote_process(['stat --printf=%m $(docker info --format "{{json .DockerRootDir}}" |sed \'s/"//g\')'], $server);
|
||||
}
|
||||
$disk_usage = json_decode(instant_remote_process(['df -hP | awk \'BEGIN {printf"{\"disks\":["}{if($1=="Filesystem")next;if(a)printf",";printf"{\"mount\":\""$6"\",\"size\":\""$2"\",\"used\":\""$3"\",\"avail\":\""$4"\",\"use%\":\""$5"\"}";a++;}END{print"]}";}\''], $server), true);
|
||||
$mount_point = collect(data_get($disk_usage, 'disks'))->where('mount', $docker_root_filesystem)->first();
|
||||
if (Str::of(data_get($mount_point, 'use%'))->trim()->replace('%', '')->value() > 60) {
|
||||
continue;
|
||||
}
|
||||
instant_remote_process(['docker image prune -af'], $server);
|
||||
instant_remote_process(['docker container prune -f --filter "label=coolify.managed=true"'], $server);
|
||||
instant_remote_process(['docker builder prune -af'], $server);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
Log::error($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Models\Server;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class InstanceDockerCleanupJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
public $timeout = 500;
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
try {
|
||||
$servers = Server::all();
|
||||
foreach ($servers as $server) {
|
||||
instant_remote_process(['docker image prune -f'], $server);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
Log::error($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class InstanceProxyCheckJob implements ShouldQueue
|
||||
class ProxyCheckJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
Loading…
Reference in New Issue
Block a user