From 469e40472588cb79af33f07fbdccc46d9776c482 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 28 Jul 2023 16:42:28 +0200 Subject: [PATCH] refactor --- .env.development.example | 2 ++ app/Actions/Proxy/CheckConfigurationSync.php | 28 ++++++++++++++++ .../Proxy/CheckProxySettingsInSync.php | 33 ------------------- app/Actions/Proxy/SaveConfigurationSync.php | 23 +++++++++++++ app/Actions/Proxy/StartProxy.php | 17 +++------- app/Http/Livewire/Server/Proxy.php | 19 ++++------- bootstrap/helpers/proxy.php | 20 +++++++---- config/coolify.php | 2 +- config/proxy.php | 5 --- docker-compose.dev.yml | 15 ++++----- .../views/livewire/server/proxy.blade.php | 5 ++- 11 files changed, 89 insertions(+), 80 deletions(-) create mode 100644 app/Actions/Proxy/CheckConfigurationSync.php delete mode 100644 app/Actions/Proxy/CheckProxySettingsInSync.php create mode 100644 app/Actions/Proxy/SaveConfigurationSync.php delete mode 100644 config/proxy.php diff --git a/.env.development.example b/.env.development.example index e73b8c1dd..506448d38 100644 --- a/.env.development.example +++ b/.env.development.example @@ -13,4 +13,6 @@ APP_DEBUG=true APP_URL=http://localhost APP_PORT=8000 +DEV_CONFIG_PATH=/home/andrasbacsai/devel/coolify/_data/coolify + DUSK_DRIVER_URL=http://selenium:4444 diff --git a/app/Actions/Proxy/CheckConfigurationSync.php b/app/Actions/Proxy/CheckConfigurationSync.php new file mode 100644 index 000000000..3648aa388 --- /dev/null +++ b/app/Actions/Proxy/CheckConfigurationSync.php @@ -0,0 +1,28 @@ +trim()->value; + resolve(SaveConfigurationSync::class)($server, $proxy_configuration); + return $proxy_configuration; + } + + return $proxy_configuration; + } + +} \ No newline at end of file diff --git a/app/Actions/Proxy/CheckProxySettingsInSync.php b/app/Actions/Proxy/CheckProxySettingsInSync.php deleted file mode 100644 index ae0142fec..000000000 --- a/app/Actions/Proxy/CheckProxySettingsInSync.php +++ /dev/null @@ -1,33 +0,0 @@ -trim()->value; - } else { - $final_output = Str::of($output)->trim()->value; - } - $docker_compose_yml_base64 = base64_encode($final_output); - $server->proxy->last_saved_settings = Str::of($docker_compose_yml_base64)->pipe('md5')->value; - $server->save(); - if (is_null($output) || $reset) { - instant_remote_process([ - "mkdir -p $proxy_path", - "echo '$docker_compose_yml_base64' | base64 -d > $proxy_path/docker-compose.yml", - ], $server); - } - return $final_output; - } -} diff --git a/app/Actions/Proxy/SaveConfigurationSync.php b/app/Actions/Proxy/SaveConfigurationSync.php new file mode 100644 index 000000000..f4c009079 --- /dev/null +++ b/app/Actions/Proxy/SaveConfigurationSync.php @@ -0,0 +1,23 @@ +proxy->last_saved_settings = Str::of($docker_compose_yml_base64)->pipe('md5')->value; + $server->save(); + + instant_remote_process([ + "mkdir -p $proxy_path", + "echo '$docker_compose_yml_base64' | base64 -d > $proxy_path/docker-compose.yml", + ], $server); + } +} \ No newline at end of file diff --git a/app/Actions/Proxy/StartProxy.php b/app/Actions/Proxy/StartProxy.php index 5e1c79aee..cea5a2166 100644 --- a/app/Actions/Proxy/StartProxy.php +++ b/app/Actions/Proxy/StartProxy.php @@ -2,6 +2,7 @@ namespace App\Actions\Proxy; +use App\Actions\Proxy\CheckConfigurationSync; use App\Enums\ProxyStatus; use App\Enums\ProxyTypes; use App\Models\Server; @@ -18,8 +19,7 @@ public function __invoke(Server $server): Activity $server->proxy->status = ProxyStatus::EXITED->value; $server->save(); } - $proxy_path = config('coolify.proxy_config_path'); - + $proxy_path = get_proxy_path(); $networks = collect($server->standaloneDockers)->map(function ($docker) { return $docker['network']; })->unique(); @@ -30,23 +30,16 @@ public function __invoke(Server $server): Activity return "docker network ls --format '{{.Name}}' | grep '^$network$' >/dev/null 2>&1 || docker network create --attachable $network > /dev/null 2>&1"; }); - $configuration = instant_remote_process([ - "cat $proxy_path/docker-compose.yml", - ], $server, false); - if (is_null($configuration)) { - $configuration = Str::of(getProxyConfiguration($server))->trim()->value; - } else { - $configuration = Str::of($configuration)->trim()->value; - } + $configuration = resolve(CheckConfigurationSync::class)($server); + $docker_compose_yml_base64 = base64_encode($configuration); $server->proxy->last_applied_settings = Str::of($docker_compose_yml_base64)->pipe('md5')->value; $server->save(); + $activity = remote_process([ "echo 'Creating required Docker networks...'", ...$create_networks_command, - "mkdir -p $proxy_path", "cd $proxy_path", - "echo '$docker_compose_yml_base64' | base64 -d > $proxy_path/docker-compose.yml", "echo 'Creating Docker Compose file...'", "echo 'Pulling docker image...'", 'docker compose pull -q', diff --git a/app/Http/Livewire/Server/Proxy.php b/app/Http/Livewire/Server/Proxy.php index d38eaa76d..4e8680419 100644 --- a/app/Http/Livewire/Server/Proxy.php +++ b/app/Http/Livewire/Server/Proxy.php @@ -2,7 +2,8 @@ namespace App\Http\Livewire\Server; -use App\Actions\Proxy\CheckProxySettingsInSync; +use App\Actions\Proxy\CheckConfigurationSync; +use App\Actions\Proxy\SaveConfigurationSync; use App\Enums\ProxyTypes; use Illuminate\Support\Str; use App\Models\Server; @@ -16,7 +17,7 @@ class Proxy extends Component public $proxy_settings = null; public string|null $redirect_url = null; - protected $listeners = ['proxyStatusUpdated', 'saveConfiguration']; + protected $listeners = ['proxyStatusUpdated', 'saveConfiguration'=>'submit']; public function mount() { $this->redirect_url = $this->server->proxy->redirect_url; @@ -41,17 +42,11 @@ public function select_proxy(string $proxy_type) public function submit() { try { - $proxy_path = config('coolify.proxy_config_path'); - $this->proxy_settings = Str::of($this->proxy_settings)->trim()->value; - $docker_compose_yml_base64 = base64_encode($this->proxy_settings); - $this->server->proxy->last_saved_settings = Str::of($docker_compose_yml_base64)->pipe('md5')->value; + resolve(SaveConfigurationSync::class)($this->server, $this->proxy_settings); + $this->server->proxy->redirect_url = $this->redirect_url; $this->server->save(); - instant_remote_process([ - "echo '$docker_compose_yml_base64' | base64 -d > $proxy_path/docker-compose.yml", - ], $this->server); - $this->server->refresh(); setup_default_redirect_404(redirect_url: $this->server->proxy->redirect_url, server: $this->server); $this->emit('success', 'Proxy configuration saved.'); } catch (\Exception $e) { @@ -61,7 +56,7 @@ public function submit() public function reset_proxy_configuration() { try { - $this->proxy_settings = resolve(CheckProxySettingsInSync::class)($this->server, true); + $this->proxy_settings = resolve(CheckConfigurationSync::class)($this->server, true); } catch (\Exception $e) { return general_error_handler(err: $e); } @@ -69,7 +64,7 @@ public function reset_proxy_configuration() public function load_proxy_configuration() { try { - $this->proxy_settings = resolve(CheckProxySettingsInSync::class)($this->server); + $this->proxy_settings = resolve(CheckConfigurationSync::class)($this->server); } catch (\Exception $e) { return general_error_handler(err: $e); } diff --git a/bootstrap/helpers/proxy.php b/bootstrap/helpers/proxy.php index 10ecc10d8..9d2cc7e45 100644 --- a/bootstrap/helpers/proxy.php +++ b/bootstrap/helpers/proxy.php @@ -2,13 +2,19 @@ use App\Models\Server; use Spatie\Url\Url; +use Illuminate\Support\Str; use Symfony\Component\Yaml\Yaml; -function getProxyConfiguration(Server $server) +function get_proxy_path() { + $base_path = config('coolify.base_config_path'); + $proxy_path = "$base_path/proxy"; + return $proxy_path; +} +function generate_default_proxy_configuration(Server $server) { - $proxy_path = config('coolify.proxy_config_path'); + $proxy_path = get_proxy_path(); if (isDev()) { - $proxy_path = $proxy_path . '/testing-host-1/'; + $proxy_path = config('coolify.dev_config_path') . '/' . $server->name . '/proxy'; } $networks = collect($server->standaloneDockers)->map(function ($docker) { return $docker['network']; @@ -53,7 +59,7 @@ function getProxyConfiguration(Server $server) "--ping=true", "--ping.entrypoint=http", "--api.dashboard=true", - "--api.insecure=true", + "--api.insecure=false", "--entrypoints.http.address=:80", "--entrypoints.https.address=:443", "--entrypoints.http.http.encodequerysemicolons=true", @@ -86,8 +92,10 @@ function getProxyConfiguration(Server $server) } function setup_default_redirect_404(string|null $redirect_url, Server $server) { - $traefik_dynamic_conf_path = '/data/coolify/proxy/dynamic'; + ray('called'); + $traefik_dynamic_conf_path = get_proxy_path() . "/dynamic"; $traefik_default_redirect_file = "$traefik_dynamic_conf_path/default_redirect_404.yaml"; + ray($redirect_url); if (empty($redirect_url)) { remote_process([ "rm -f $traefik_default_redirect_file", @@ -159,4 +167,4 @@ function setup_default_redirect_404(string|null $redirect_url, Server $server) ray($yaml); } } -} +} \ No newline at end of file diff --git a/config/coolify.php b/config/coolify.php index aed7555ab..459fefcc6 100644 --- a/config/coolify.php +++ b/config/coolify.php @@ -10,5 +10,5 @@ 'mux_enabled' => env('MUX_ENABLED', true), 'dev_webhook' => env('SERVEO_URL'), 'base_config_path' => env('BASE_CONFIG_PATH', '/data/coolify'), - 'proxy_config_path' => env('BASE_CONFIG_PATH', '/data/coolify') . "/proxy", + 'dev_config_path' => env('DEV_CONFIG_PATH', './_data/coolify'), ]; diff --git a/config/proxy.php b/config/proxy.php deleted file mode 100644 index 3b5832666..000000000 --- a/config/proxy.php +++ /dev/null @@ -1,5 +0,0 @@ - env('PROJECT_PATH_ON_HOST', '/var/www/html') -]; diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 41043aaa0..752787831 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,7 +1,6 @@ -version: '3.8' +version: "3.8" -x-testing-host: - &testing-host-base +x-testing-host: &testing-host-base build: dockerfile: Dockerfile context: ./docker/testing-host @@ -55,19 +54,19 @@ services: container_name: coolify-testing-host volumes: - /var/run/docker.sock:/var/run/docker.sock - - "./_data/coolify/proxy/testing-host-1:/data/coolify/proxy" + - "./_data/coolify/testing-local-docker-container/proxy:/data/coolify/proxy" testing-host-2: <<: *testing-host-base container_name: coolify-testing-host-2 volumes: - /var/run/docker.sock:/var/run/docker.sock - - "./_data/coolify/proxy/testing-host-2:/data/coolify/proxy" + - "./_data/coolify/testing-local-docker-container-2/proxy:/data/coolify/proxy" mailpit: - image: 'axllent/mailpit:latest' + image: "axllent/mailpit:latest" container_name: coolify-mail ports: - - '${FORWARD_MAILPIT_PORT:-1025}:1025' - - '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025' + - "${FORWARD_MAILPIT_PORT:-1025}:1025" + - "${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025" networks: - coolify diff --git a/resources/views/livewire/server/proxy.blade.php b/resources/views/livewire/server/proxy.blade.php index 4859b3a29..11b277663 100644 --- a/resources/views/livewire/server/proxy.blade.php +++ b/resources/views/livewire/server/proxy.blade.php @@ -12,13 +12,12 @@ @endif -
Traefik v2
@if ( $server->proxy->last_applied_settings && $server->proxy->last_saved_settings !== $server->proxy->last_applied_settings) -
Configuration out of sync. Restart to get the new - configs. +
Configuration out of sync. Restart the proxy to apply the new + configurations.
@endif