From a05545c78a9c13236ea199307a744984628a372e Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Wed, 4 Feb 2026 00:35:01 +0100 Subject: [PATCH] feat(database): add official postgres 18 support - postgres versions 18 and higher require a different volume mount path, so we need to adjust the path when creating them --- app/Models/StandalonePostgresql.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/Models/StandalonePostgresql.php b/app/Models/StandalonePostgresql.php index be86438fe..ea59ccaa9 100644 --- a/app/Models/StandalonePostgresql.php +++ b/app/Models/StandalonePostgresql.php @@ -28,9 +28,23 @@ class StandalonePostgresql extends BaseModel protected static function booted() { static::created(function ($database) { + // This is really stupid and it took me 1h to figure out why the image was not loading properly. This is exactly the reason why we need to use the action pattern because Model events and Accessors are a fragile mess! + $image = (string) ($database->getAttributes()['image'] ?? ''); + $majorVersion = 0; + + if (preg_match('/:(\d+)/', $image, $matches)) { + $majorVersion = (int) $matches[1]; + } + + // PostgreSQL 18+ uses /var/lib/postgresql as mount path + // Older versions use /var/lib/postgresql/data + $mountPath = $majorVersion >= 18 + ? '/var/lib/postgresql' + : '/var/lib/postgresql/data'; + LocalPersistentVolume::create([ 'name' => 'postgres-data-'.$database->uuid, - 'mount_path' => '/var/lib/postgresql/data', + 'mount_path' => $mountPath, 'host_path' => null, 'resource_id' => $database->id, 'resource_type' => $database->getMorphClass(),