refactor: Update Traefik labels on init and cleanup unnecessary dynamic proxy configuration

This commit is contained in:
Andras Bacsai
2024-08-08 11:15:33 +02:00
parent d3b3c2f7fd
commit 777bff6553

View File

@@ -99,24 +99,32 @@ class Init extends Command
private function update_traefik_labels() private function update_traefik_labels()
{ {
Server::where('proxy->type', 'TRAEFIK_V2')->update(['proxy->type' => 'TRAEFIK']); try {
Server::where('proxy->type', 'TRAEFIK_V2')->update(['proxy->type' => 'TRAEFIK']);
} catch (\Throwable $e) {
echo "Error in updating traefik labels: {$e->getMessage()}\n";
}
} }
private function cleanup_unnecessary_dynamic_proxy_configuration() private function cleanup_unnecessary_dynamic_proxy_configuration()
{ {
if (isCloud()) { if (isCloud()) {
foreach ($this->servers as $server) { foreach ($this->servers as $server) {
if (! $server->isFunctional()) { try {
continue; if (! $server->isFunctional()) {
} continue;
if ($server->id === 0) { }
continue; if ($server->id === 0) {
} continue;
$file = $server->proxyPath().'/dynamic/coolify.yaml'; }
$file = $server->proxyPath().'/dynamic/coolify.yaml';
return instant_remote_process([ return instant_remote_process([
"rm -f $file", "rm -f $file",
], $server, false); ], $server, false);
} catch (\Throwable $e) {
echo "Error in cleaning up unnecessary dynamic proxy configuration: {$e->getMessage()}\n";
}
} }
} }
@@ -124,7 +132,6 @@ class Init extends Command
private function cleanup_unused_network_from_coolify_proxy() private function cleanup_unused_network_from_coolify_proxy()
{ {
ray()->clearAll();
foreach ($this->servers as $server) { foreach ($this->servers as $server) {
if (! $server->isFunctional()) { if (! $server->isFunctional()) {
continue; continue;
@@ -132,29 +139,33 @@ class Init extends Command
if (! $server->isProxyShouldRun()) { if (! $server->isProxyShouldRun()) {
continue; continue;
} }
['networks' => $networks, 'allNetworks' => $allNetworks] = collectDockerNetworksByServer($server); try {
$removeNetworks = $allNetworks->diff($networks); ['networks' => $networks, 'allNetworks' => $allNetworks] = collectDockerNetworksByServer($server);
$commands = collect(); $removeNetworks = $allNetworks->diff($networks);
foreach ($removeNetworks as $network) { $commands = collect();
$out = instant_remote_process(["docker network inspect -f json $network | jq '.[].Containers | if . == {} then null else . end'"], $server, false); foreach ($removeNetworks as $network) {
if (empty($out)) { $out = instant_remote_process(["docker network inspect -f json $network | jq '.[].Containers | if . == {} then null else . end'"], $server, false);
$commands->push("docker network disconnect $network coolify-proxy >/dev/null 2>&1 || true"); if (empty($out)) {
$commands->push("docker network rm $network >/dev/null 2>&1 || true"); $commands->push("docker network disconnect $network coolify-proxy >/dev/null 2>&1 || true");
} else { $commands->push("docker network rm $network >/dev/null 2>&1 || true");
$data = collect(json_decode($out, true)); } else {
if ($data->count() === 1) { $data = collect(json_decode($out, true));
// If only coolify-proxy itself is connected to that network (it should not be possible, but who knows) if ($data->count() === 1) {
$isCoolifyProxyItself = data_get($data->first(), 'Name') === 'coolify-proxy'; // If only coolify-proxy itself is connected to that network (it should not be possible, but who knows)
if ($isCoolifyProxyItself) { $isCoolifyProxyItself = data_get($data->first(), 'Name') === 'coolify-proxy';
$commands->push("docker network disconnect $network coolify-proxy >/dev/null 2>&1 || true"); if ($isCoolifyProxyItself) {
$commands->push("docker network rm $network >/dev/null 2>&1 || true"); $commands->push("docker network disconnect $network coolify-proxy >/dev/null 2>&1 || true");
$commands->push("docker network rm $network >/dev/null 2>&1 || true");
}
} }
} }
} }
} if ($commands->isNotEmpty()) {
if ($commands->isNotEmpty()) { echo "Cleaning up unused networks from coolify proxy\n";
echo "Cleaning up unused networks from coolify proxy\n"; remote_process(command: $commands, type: ActivityTypes::INLINE->value, server: $server, ignore_errors: false);
remote_process(command: $commands, type: ActivityTypes::INLINE->value, server: $server, ignore_errors: false); }
} catch (\Throwable $e) {
echo "Error in cleaning up unused networks from coolify proxy: {$e->getMessage()}\n";
} }
} }
} }
@@ -231,7 +242,6 @@ class Init extends Command
private function cleanup_in_progress_application_deployments() private function cleanup_in_progress_application_deployments()
{ {
// Cleanup any failed deployments // Cleanup any failed deployments
try { try {
if (isCloud()) { if (isCloud()) {
return; return;