fix: able to support more database dynamically from Coolify's UI

This commit is contained in:
Andras Bacsai
2024-10-03 13:49:43 +02:00
parent 5282248cb4
commit ef448280d8
3 changed files with 59 additions and 11 deletions

View File

@@ -770,9 +770,34 @@ class Service extends BaseModel
} }
$fields->put('Code Server', $data->toArray()); $fields->put('Code Server', $data->toArray());
break; break;
case str($image)->contains('elestio/strapi'):
$data = collect([]);
$license = $this->environment_variables()->where('key', 'STRAPI_LICENSE')->first();
if ($license) {
$data = $data->merge([
'License' => [
'key' => data_get($license, 'key'),
'value' => data_get($license, 'value'),
],
]);
}
$nodeEnv = $this->environment_variables()->where('key', 'NODE_ENV')->first();
if ($nodeEnv) {
$data = $data->merge([
'Node Environment' => [
'key' => data_get($nodeEnv, 'key'),
'value' => data_get($nodeEnv, 'value'),
],
]);
}
$fields->put('Strapi', $data->toArray());
break;
} }
} }
$databases = $this->databases()->get(); $databases = $this->databases()->get();
ray($databases);
foreach ($databases as $database) { foreach ($databases as $database) {
$image = str($database->image)->before(':')->value(); $image = str($database->image)->before(':')->value();
@@ -1108,7 +1133,6 @@ class Service extends BaseModel
$real_value = escapeEnvVariables($env->real_value); $real_value = escapeEnvVariables($env->real_value);
} }
} }
ray("echo \"{$env->key}={$real_value}\" >> .env");
$commands[] = "echo \"{$env->key}={$real_value}\" >> .env"; $commands[] = "echo \"{$env->key}={$real_value}\" >> .env";
} }
} }

View File

@@ -34,6 +34,7 @@ const DATABASE_DOCKER_IMAGES = [
'influxdb', 'influxdb',
'clickhouse/clickhouse-server', 'clickhouse/clickhouse-server',
'supabase/postgres', 'supabase/postgres',
'elestio/postgres',
]; ];
const SPECIFIC_SERVICES = [ const SPECIFIC_SERVICES = [
'quay.io/minio/minio', 'quay.io/minio/minio',

View File

@@ -2984,11 +2984,22 @@ function newParser(Application|Service $resource, int $pull_request_id = 0, ?int
$predefinedPort = '8000'; $predefinedPort = '8000';
} }
if ($isDatabase) { if ($isDatabase) {
$savedService = ServiceDatabase::firstOrCreate([ $applicationFound = ServiceApplication::where('name', $serviceName)->where('image', $image)->where('service_id', $resource->id)->first();
'name' => $serviceName, if ($applicationFound) {
'image' => $image, $savedService = $applicationFound;
'service_id' => $resource->id, $savedService = ServiceDatabase::firstOrCreate([
]); 'name' => $applicationFound->name,
'image' => $applicationFound->image,
'service_id' => $applicationFound->service_id,
]);
$applicationFound->delete();
} else {
$savedService = ServiceDatabase::firstOrCreate([
'name' => $serviceName,
'image' => $image,
'service_id' => $resource->id,
]);
}
} else { } else {
$savedService = ServiceApplication::firstOrCreate([ $savedService = ServiceApplication::firstOrCreate([
'name' => $serviceName, 'name' => $serviceName,
@@ -3209,12 +3220,24 @@ function newParser(Application|Service $resource, int $pull_request_id = 0, ?int
if ($serviceName === 'plausible') { if ($serviceName === 'plausible') {
$predefinedPort = '8000'; $predefinedPort = '8000';
} }
if ($isDatabase) { if ($isDatabase) {
$savedService = ServiceDatabase::firstOrCreate([ $applicationFound = ServiceApplication::where('name', $serviceName)->where('image', $image)->where('service_id', $resource->id)->first();
'name' => $serviceName, if ($applicationFound) {
'image' => $image, $savedService = $applicationFound;
'service_id' => $resource->id, $savedService = ServiceDatabase::firstOrCreate([
]); 'name' => $applicationFound->name,
'image' => $applicationFound->image,
'service_id' => $applicationFound->service_id,
]);
$applicationFound->delete();
} else {
$savedService = ServiceDatabase::firstOrCreate([
'name' => $serviceName,
'image' => $image,
'service_id' => $resource->id,
]);
}
} else { } else {
$savedService = ServiceApplication::firstOrCreate([ $savedService = ServiceApplication::firstOrCreate([
'name' => $serviceName, 'name' => $serviceName,