mirror of
https://github.com/coollabsio/coolify.git
synced 2026-03-11 08:55:47 +00:00
refactor: add caching for docker inspect results for ComplexStatusCheck
This commit is contained in:
parent
6b88481ce2
commit
5a34f180eb
3 changed files with 19 additions and 5 deletions
|
|
@ -46,10 +46,11 @@ class GetContainersStatus
|
|||
}
|
||||
$this->applications = $this->server->applications();
|
||||
$skip_these_applications = collect([]);
|
||||
$dockerInspectCache = [];
|
||||
foreach ($this->applications as $application) {
|
||||
if ($application->additional_servers->count() > 0) {
|
||||
$skip_these_applications->push($application);
|
||||
ComplexStatusCheck::run($application);
|
||||
ComplexStatusCheck::run($application, $dockerInspectCache);
|
||||
$this->applications = $this->applications->filter(function ($value, $key) use ($application) {
|
||||
return $value->id !== $application->id;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ class ComplexStatusCheck
|
|||
use AsAction;
|
||||
use CalculatesExcludedStatus;
|
||||
|
||||
public function handle(Application $application)
|
||||
public function handle(Application $application, array &$dockerInspectCache = [])
|
||||
{
|
||||
$servers = $application->additional_servers;
|
||||
$servers->push($application->destination->server);
|
||||
|
|
@ -29,8 +29,20 @@ class ComplexStatusCheck
|
|||
continue;
|
||||
}
|
||||
}
|
||||
$containers = instant_remote_process(["docker container inspect $(docker container ls -q --filter 'label=coolify.applicationId={$application->id}' --filter 'label=coolify.pullRequestId=0') --format '{{json .}}'"], $server, false);
|
||||
$containers = format_docker_command_output_to_json($containers);
|
||||
|
||||
if (!isset($dockerInspectCache[$server->id])) {
|
||||
$allContainers = instant_remote_process(["docker container inspect $(docker ps -aq --filter 'label=coolify.pullRequestId=0') --format 'json'"], $server, false);
|
||||
$allContainers = format_docker_command_output_to_json($allContainers);
|
||||
$dockerInspectCache[$server->id] = $allContainers;
|
||||
}
|
||||
$allContainers = $dockerInspectCache[$server->id];
|
||||
|
||||
$containers = collect($allContainers)->filter(function ($container) use ($application) {
|
||||
$labels = data_get($container, 'Config.Labels', []);
|
||||
$appId = data_get($labels, 'coolify.applicationId');
|
||||
|
||||
return $appId && intval($appId) === $application->id;
|
||||
});
|
||||
|
||||
if ($containers->count() > 0) {
|
||||
$statusToSet = $this->aggregateContainerStatuses($application, $containers);
|
||||
|
|
|
|||
|
|
@ -580,8 +580,9 @@ class PushServerUpdateJob implements ShouldBeEncrypted, ShouldQueue, Silenced
|
|||
|
||||
private function updateAdditionalServersStatus()
|
||||
{
|
||||
$dockerInspectCache = [];
|
||||
$this->allApplicationsWithAdditionalServers->each(function ($application) {
|
||||
ComplexStatusCheck::run($application);
|
||||
ComplexStatusCheck::run($application, $dockerInspectCache);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue