public_port;
+ proxy_pass $database->uuid:5432;
+ }
+}
+EOF;
+ $docker_compose = [
+ 'version' => '3.8',
+ 'services' => [
+ $containerName => [
+ 'image' => "nginx:stable-alpine",
+ 'container_name' => $containerName,
+ 'restart' => RESTART_MODE,
+ 'volumes' => [
+ "$configuration_dir/nginx.conf:/etc/nginx/nginx.conf:ro",
+ ],
+ 'ports' => [
+ "$database->public_port:$database->public_port",
+ ],
+ 'networks' => [
+ $database->destination->network,
+ ],
+ 'healthcheck' => [
+ 'test' => [
+ 'CMD-SHELL',
+ 'stat /etc/nginx/nginx.conf || exit 1',
+ ],
+ 'interval' => '5s',
+ 'timeout' => '5s',
+ 'retries' => 3,
+ 'start_period' => '1s'
+ ],
+ ]
+ ],
+ 'networks' => [
+ $database->destination->network => [
+ 'external' => true,
+ 'name' => $database->destination->network,
+ 'attachable' => true,
+ ]
+ ]
+ ];
+ $dockercompose_base64 = base64_encode(Yaml::dump($docker_compose, 4, 2));
+ $nginxconf_base64 = base64_encode($nginxconf);
+ instant_remote_process([
+ "mkdir -p $configuration_dir",
+ "echo '{$nginxconf_base64}' | base64 -d > $configuration_dir/nginx.conf",
+ "echo '{$dockercompose_base64}' | base64 -d > $configuration_dir/docker-compose.yaml",
+ "docker compose --project-directory {$configuration_dir} up -d >/dev/null",
+
+
+ ], $database->destination->server);
+}
+function stopPostgresProxy(StandalonePostgresql $database)
+{
+ instant_remote_process(["docker rm -f {$database->uuid}-proxy"], $database->destination->server);
+}
diff --git a/bootstrap/helpers/shared.php b/bootstrap/helpers/shared.php
index ac8beecf3..15f8fc0db 100644
--- a/bootstrap/helpers/shared.php
+++ b/bootstrap/helpers/shared.php
@@ -28,6 +28,10 @@ function database_configuration_dir(): string
{
return '/data/coolify/databases';
}
+function database_proxy_dir($uuid): string
+{
+ return "/data/coolify/databases/$uuid/proxy";
+}
function backup_dir(): string
{
diff --git a/config/sentry.php b/config/sentry.php
index ea6317851..8d9da20e0 100644
--- a/config/sentry.php
+++ b/config/sentry.php
@@ -7,7 +7,7 @@ return [
// The release version of your application
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
- 'release' => '4.0.0-beta.25',
+ 'release' => '4.0.0-beta.26',
'server_name' => env('APP_ID', 'coolify'),
// When left empty or `null` the Laravel environment will be used
'environment' => config('app.env'),
diff --git a/config/version.php b/config/version.php
index 03ee49dc6..39c13e6c2 100644
--- a/config/version.php
+++ b/config/version.php
@@ -1,3 +1,3 @@
merge(['class' => $defaultClass]) }}
- @if ($instantSave) wire:click='{{ $instantSave === 'instantSave' || $instantSave == '1' ? 'instantSave' : $instantSave }}'
+ @if ($instantSave) wire:loading.attr="disabled" wire:click='{{ $instantSave === 'instantSave' || $instantSave == '1' ? 'instantSave' : $instantSave }}'
wire:model.defer={{ $id }} @else wire:model.defer={{ $value ?? $id }} @endif />
diff --git a/resources/views/livewire/project/database/postgresql/general.blade.php b/resources/views/livewire/project/database/postgresql/general.blade.php
index 7fe29c2bf..8b184f024 100644
--- a/resources/views/livewire/project/database/postgresql/general.blade.php
+++ b/resources/views/livewire/project/database/postgresql/general.blade.php
@@ -51,10 +51,15 @@
-
diff --git a/resources/views/vendor/toaster/hub.blade.php b/resources/views/vendor/toaster/hub.blade.php
index 5aff1b506..3bca749b6 100644
--- a/resources/views/vendor/toaster/hub.blade.php
+++ b/resources/views/vendor/toaster/hub.blade.php
@@ -22,7 +22,7 @@
class="relative flex duration-300 transform transition ease-in-out max-w-md w-full pointer-events-auto {{ $position->is('center') ? 'text-center' : 'text-left' }}"
:class="toast.select({ error: 'text-white', info: 'text-white', success: 'text-white', warning: 'text-white' })"
>
-
+
@if ($closeable)
diff --git a/versions.json b/versions.json
index b31c1415b..cfa6f9ad8 100644
--- a/versions.json
+++ b/versions.json
@@ -4,7 +4,7 @@
"version": "3.12.36"
},
"v4": {
- "version": "4.0.0-beta.24"
+ "version": "4.0.0-beta.25"
}
}
}