Skip to content

Commit a898237

Browse files
authored
Merge pull request coollabsio#3683 from coollabsio/next
v4.0.0-beta.351
2 parents 436a1d9 + 6dd0bd0 commit a898237

32 files changed

+417
-88
lines changed

app/Http/Controllers/Api/ApplicationsController.php

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -744,8 +744,10 @@ private function create_application(Request $request, $type)
744744
$application->destination_id = $destination->id;
745745
$application->destination_type = $destination->getMorphClass();
746746
$application->environment_id = $environment->id;
747-
$application->settings->is_build_server_enabled = $useBuildServer;
748-
$application->settings->save();
747+
if (isset($useBuildServer)) {
748+
$application->settings->is_build_server_enabled = $useBuildServer;
749+
$application->settings->save();
750+
}
749751
$application->save();
750752
$application->refresh();
751753
if (! $application->settings->is_container_label_readonly_enabled) {
@@ -842,8 +844,10 @@ private function create_application(Request $request, $type)
842844
$application->environment_id = $environment->id;
843845
$application->source_type = $githubApp->getMorphClass();
844846
$application->source_id = $githubApp->id;
845-
$application->settings->is_build_server_enabled = $useBuildServer;
846-
$application->settings->save();
847+
if (isset($useBuildServer)) {
848+
$application->settings->is_build_server_enabled = $useBuildServer;
849+
$application->settings->save();
850+
}
847851
$application->save();
848852
$application->refresh();
849853
if (! $application->settings->is_container_label_readonly_enabled) {
@@ -936,8 +940,10 @@ private function create_application(Request $request, $type)
936940
$application->destination_id = $destination->id;
937941
$application->destination_type = $destination->getMorphClass();
938942
$application->environment_id = $environment->id;
939-
$application->settings->is_build_server_enabled = $useBuildServer;
940-
$application->settings->save();
943+
if (isset($useBuildServer)) {
944+
$application->settings->is_build_server_enabled = $useBuildServer;
945+
$application->settings->save();
946+
}
941947
$application->save();
942948
$application->refresh();
943949
if (! $application->settings->is_container_label_readonly_enabled) {
@@ -1017,8 +1023,10 @@ private function create_application(Request $request, $type)
10171023
$application->destination_id = $destination->id;
10181024
$application->destination_type = $destination->getMorphClass();
10191025
$application->environment_id = $environment->id;
1020-
$application->settings->is_build_server_enabled = $useBuildServer;
1021-
$application->settings->save();
1026+
if (isset($useBuildServer)) {
1027+
$application->settings->is_build_server_enabled = $useBuildServer;
1028+
$application->settings->save();
1029+
}
10221030

10231031
$application->git_repository = 'coollabsio/coolify';
10241032
$application->git_branch = 'main';
@@ -1077,8 +1085,10 @@ private function create_application(Request $request, $type)
10771085
$application->destination_id = $destination->id;
10781086
$application->destination_type = $destination->getMorphClass();
10791087
$application->environment_id = $environment->id;
1080-
$application->settings->is_build_server_enabled = $useBuildServer;
1081-
$application->settings->save();
1088+
if (isset($useBuildServer)) {
1089+
$application->settings->is_build_server_enabled = $useBuildServer;
1090+
$application->settings->save();
1091+
}
10821092

10831093
$application->git_repository = 'coollabsio/coolify';
10841094
$application->git_branch = 'main';
@@ -1555,8 +1565,11 @@ public function update_by_uuid(Request $request)
15551565
$instantDeploy = $request->instant_deploy;
15561566

15571567
$use_build_server = $request->use_build_server;
1558-
$application->settings->is_build_server_enabled = $use_build_server;
1559-
$application->settings->save();
1568+
1569+
if (isset($use_build_server)) {
1570+
$application->settings->is_build_server_enabled = $use_build_server;
1571+
$application->settings->save();
1572+
}
15601573

15611574
removeUnnecessaryFieldsFromRequest($request);
15621575

app/Jobs/DatabaseBackupJob.php

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,9 @@ public function handle(): void
243243
try {
244244
if (str($databaseType)->contains('postgres')) {
245245
$this->backup_file = "/pg-dump-$database-".Carbon::now()->timestamp.'.dmp';
246+
if ($this->backup->dump_all) {
247+
$this->backup_file = '/pg-dump-all-'.Carbon::now()->timestamp.'.gz';
248+
}
246249
$this->backup_location = $this->backup_dir.$this->backup_file;
247250
$this->backup_log = ScheduledDatabaseBackupExecution::create([
248251
'database_name' => $database,
@@ -271,6 +274,9 @@ public function handle(): void
271274
$this->backup_standalone_mongodb($database);
272275
} elseif (str($databaseType)->contains('mysql')) {
273276
$this->backup_file = "/mysql-dump-$database-".Carbon::now()->timestamp.'.dmp';
277+
if ($this->backup->dump_all) {
278+
$this->backup_file = '/mysql-dump-all-'.Carbon::now()->timestamp.'.gz';
279+
}
274280
$this->backup_location = $this->backup_dir.$this->backup_file;
275281
$this->backup_log = ScheduledDatabaseBackupExecution::create([
276282
'database_name' => $database,
@@ -280,6 +286,9 @@ public function handle(): void
280286
$this->backup_standalone_mysql($database);
281287
} elseif (str($databaseType)->contains('mariadb')) {
282288
$this->backup_file = "/mariadb-dump-$database-".Carbon::now()->timestamp.'.dmp';
289+
if ($this->backup->dump_all) {
290+
$this->backup_file = '/mariadb-dump-all-'.Carbon::now()->timestamp.'.gz';
291+
}
283292
$this->backup_location = $this->backup_dir.$this->backup_file;
284293
$this->backup_log = ScheduledDatabaseBackupExecution::create([
285294
'database_name' => $database,
@@ -379,7 +388,11 @@ private function backup_standalone_postgresql(string $database): void
379388
if ($this->postgres_password) {
380389
$backupCommand .= " -e PGPASSWORD=$this->postgres_password";
381390
}
382-
$backupCommand .= " $this->container_name pg_dump --format=custom --no-acl --no-owner --username {$this->database->postgres_user} $database > $this->backup_location";
391+
if ($this->backup->dump_all) {
392+
$backupCommand .= " $this->container_name pg_dumpall --username {$this->database->postgres_user} | gzip > $this->backup_location";
393+
} else {
394+
$backupCommand .= " $this->container_name pg_dump --format=custom --no-acl --no-owner --username {$this->database->postgres_user} $database > $this->backup_location";
395+
}
383396

384397
$commands[] = $backupCommand;
385398
ray($commands);
@@ -400,8 +413,11 @@ private function backup_standalone_mysql(string $database): void
400413
{
401414
try {
402415
$commands[] = 'mkdir -p '.$this->backup_dir;
403-
$commands[] = "docker exec $this->container_name mysqldump -u root -p{$this->database->mysql_root_password} $database > $this->backup_location";
404-
ray($commands);
416+
if ($this->backup->dump_all) {
417+
$commands[] = "docker exec $this->container_name mysqldump -u root -p{$this->database->mysql_root_password} --all-databases --single-transaction --quick --lock-tables=false --compress | gzip > $this->backup_location";
418+
} else {
419+
$commands[] = "docker exec $this->container_name mysqldump -u root -p{$this->database->mysql_root_password} $database > $this->backup_location";
420+
}
405421
$this->backup_output = instant_remote_process($commands, $this->server);
406422
$this->backup_output = trim($this->backup_output);
407423
if ($this->backup_output === '') {
@@ -419,7 +435,11 @@ private function backup_standalone_mariadb(string $database): void
419435
{
420436
try {
421437
$commands[] = 'mkdir -p '.$this->backup_dir;
422-
$commands[] = "docker exec $this->container_name mariadb-dump -u root -p{$this->database->mariadb_root_password} $database > $this->backup_location";
438+
if ($this->backup->dump_all) {
439+
$commands[] = "docker exec $this->container_name mariadb-dump -u root -p{$this->database->mariadb_root_password} --all-databases --single-transaction --quick --lock-tables=false --compress > $this->backup_location";
440+
} else {
441+
$commands[] = "docker exec $this->container_name mariadb-dump -u root -p{$this->database->mariadb_root_password} $database > $this->backup_location";
442+
}
423443
ray($commands);
424444
$this->backup_output = instant_remote_process($commands, $this->server);
425445
$this->backup_output = trim($this->backup_output);

app/Livewire/Project/Database/BackupEdit.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class BackupEdit extends Component
3131
'backup.save_s3' => 'required|boolean',
3232
'backup.s3_storage_id' => 'nullable|integer',
3333
'backup.databases_to_backup' => 'nullable',
34+
'backup.dump_all' => 'required|boolean',
3435
];
3536

3637
protected $validationAttributes = [
@@ -40,6 +41,7 @@ class BackupEdit extends Component
4041
'backup.save_s3' => 'Save to S3',
4142
'backup.s3_storage_id' => 'S3 Storage',
4243
'backup.databases_to_backup' => 'Databases to Backup',
44+
'backup.dump_all' => 'Backup All Databases',
4345
];
4446

4547
protected $messages = [

app/Livewire/Project/Service/Navbar.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,21 @@ public function restart()
108108

109109
return;
110110
}
111+
StopService::run(service: $this->service, dockerCleanup: false);
112+
$this->service->parse();
113+
$this->dispatch('imagePulled');
114+
$activity = StartService::run($this->service);
115+
$this->dispatch('activityMonitor', $activity->id);
116+
}
117+
118+
public function pullAndRestartEvent()
119+
{
120+
$this->checkDeployments();
121+
if ($this->isDeploymentProgress) {
122+
$this->dispatch('error', 'There is a deployment in progress.');
123+
124+
return;
125+
}
111126
PullImage::run($this->service);
112127
StopService::run(service: $this->service, dockerCleanup: false);
113128
$this->service->parse();

app/Models/Service.php

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,9 +770,34 @@ public function extraFields()
770770
}
771771
$fields->put('Code Server', $data->toArray());
772772
break;
773+
case str($image)->contains('elestio/strapi'):
774+
$data = collect([]);
775+
$license = $this->environment_variables()->where('key', 'STRAPI_LICENSE')->first();
776+
if ($license) {
777+
$data = $data->merge([
778+
'License' => [
779+
'key' => data_get($license, 'key'),
780+
'value' => data_get($license, 'value'),
781+
],
782+
]);
783+
}
784+
$nodeEnv = $this->environment_variables()->where('key', 'NODE_ENV')->first();
785+
if ($nodeEnv) {
786+
$data = $data->merge([
787+
'Node Environment' => [
788+
'key' => data_get($nodeEnv, 'key'),
789+
'value' => data_get($nodeEnv, 'value'),
790+
],
791+
]);
792+
}
793+
794+
$fields->put('Strapi', $data->toArray());
795+
break;
796+
773797
}
774798
}
775799
$databases = $this->databases()->get();
800+
ray($databases);
776801

777802
foreach ($databases as $database) {
778803
$image = str($database->image)->before(':')->value();
@@ -1108,7 +1133,6 @@ public function saveComposeConfigs()
11081133
$real_value = escapeEnvVariables($env->real_value);
11091134
}
11101135
}
1111-
ray("echo \"{$env->key}={$real_value}\" >> .env");
11121136
$commands[] = "echo \"{$env->key}={$real_value}\" >> .env";
11131137
}
11141138
}

app/Models/ServiceDatabase.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,12 @@ public function scheduledBackups()
115115
{
116116
return $this->morphMany(ScheduledDatabaseBackup::class, 'database');
117117
}
118+
119+
public function isBackupSolutionAvailable()
120+
{
121+
return str($this->databaseType())->contains('mysql') ||
122+
str($this->databaseType())->contains('postgres') ||
123+
str($this->databaseType())->contains('mariadb') ||
124+
str($this->databaseType())->contains('mongodb');
125+
}
118126
}

app/Models/StandaloneClickhouse.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,9 @@ public function getMetrics(int $mins = 5)
294294
return $parsedCollection->toArray();
295295
}
296296
}
297+
298+
public function isBackupSolutionAvailable()
299+
{
300+
return false;
301+
}
297302
}

app/Models/StandaloneDragonfly.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,9 @@ public function getMetrics(int $mins = 5)
294294
return $parsedCollection->toArray();
295295
}
296296
}
297+
298+
public function isBackupSolutionAvailable()
299+
{
300+
return false;
301+
}
297302
}

app/Models/StandaloneKeydb.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,9 @@ public function getMetrics(int $mins = 5)
294294
return $parsedCollection->toArray();
295295
}
296296
}
297+
298+
public function isBackupSolutionAvailable()
299+
{
300+
return false;
301+
}
297302
}

app/Models/StandaloneMariadb.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,9 @@ public function getMetrics(int $mins = 5)
294294
return $parsedCollection->toArray();
295295
}
296296
}
297+
298+
public function isBackupSolutionAvailable()
299+
{
300+
return true;
301+
}
297302
}

0 commit comments

Comments
 (0)