diff --git a/app/Http/Livewire/Project/Service/StackForm.php b/app/Http/Livewire/Project/Service/StackForm.php index 2c1fa5495..30a3e7380 100644 --- a/app/Http/Livewire/Project/Service/StackForm.php +++ b/app/Http/Livewire/Project/Service/StackForm.php @@ -7,6 +7,7 @@ use Livewire\Component; class StackForm extends Component { public $service; + public $isConfigurationRequired = false; protected $listeners = ["saveCompose"]; protected $rules = [ 'service.docker_compose_raw' => 'required', @@ -14,8 +15,14 @@ class StackForm extends Component 'service.name' => 'required', 'service.description' => 'nullable', ]; + public function mount () { + if ($this->service->applications->filter(fn($app) => str($app->image)->contains('minio/minio'))->count() > 0) { + $this->isConfigurationRequired = true; + } + } public function saveCompose($raw) { + $this->service->docker_compose_raw = $raw; $this->submit(); } diff --git a/app/Models/Service.php b/app/Models/Service.php index a1fa4b4ba..14084f282 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -453,15 +453,31 @@ class Service extends BaseModel 'service_id' => $this->id, ])->first(); if ($value->startsWith('SERVICE_')) { - $command = $value->after('SERVICE_')->beforeLast('_'); - $forService = $value->afterLast('_'); - $generatedValue = null; + // Count _ in $value + $count = substr_count($value->value(), '_'); + if ($count === 2) { + // SERVICE_FQDN_UMAMI + $command = $value->after('SERVICE_')->beforeLast('_'); + $forService = $value->afterLast('_'); + $generatedValue = null; + $port = null; + } + if ($count === 3) { + // SERVICE_FQDN_UMAMI_1000 + $command = $value->after('SERVICE_')->before('_'); + $forService = $value->after('SERVICE_')->after('_')->before('_'); + $generatedValue = null; + $port = $value->afterLast('_'); + } if ($command->value() === 'FQDN' || $command->value() === 'URL') { if (Str::lower($forService) === $serviceName) { $fqdn = generateFqdn($this->server, $containerName); } else { $fqdn = generateFqdn($this->server, Str::lower($forService) . '-' . $this->uuid); } + if ($port) { + $fqdn = "$fqdn:$port"; + } if ($foundEnv) { $fqdn = data_get($foundEnv, 'value'); } else { @@ -477,7 +493,7 @@ class Service extends BaseModel ]); } if (!$isDatabase) { - if ($command->value() === 'FQDN') { + if ($command->value() === 'FQDN' && is_null($savedService->fqdn)) { $savedService->fqdn = $fqdn; $savedService->save(); } diff --git a/bootstrap/helpers/services.php b/bootstrap/helpers/services.php index 762b83563..b9a305a42 100644 --- a/bootstrap/helpers/services.php +++ b/bootstrap/helpers/services.php @@ -85,7 +85,6 @@ function getFilesystemVolumesFromServer(ServiceApplication|ServiceDatabase $oneS } else { $fileLocation = $path; } - ray($path,$fileLocation); // Exists and is a file $isFile = instant_remote_process(["test -f $fileLocation && echo OK || echo NOK"], $server); // Exists and is a directory @@ -127,6 +126,7 @@ function getFilesystemVolumesFromServer(ServiceApplication|ServiceDatabase $oneS function updateCompose($resource) { try { + ray($resource); $name = data_get($resource, 'name'); $dockerComposeRaw = data_get($resource, 'service.docker_compose_raw'); $dockerCompose = Yaml::parse($dockerComposeRaw); @@ -135,19 +135,21 @@ function updateCompose($resource) $image = data_get($resource, 'image'); data_set($dockerCompose, "services.{$name}.image", $image); - // Update FQDN - $variableName = "SERVICE_FQDN_" . Str::of($resource->name)->upper(); - $generatedEnv = EnvironmentVariable::where('service_id', $resource->service_id)->where('key', $variableName)->first(); - if ($generatedEnv) { - $generatedEnv->value = $resource->fqdn; - $generatedEnv->save(); - } - $variableName = "SERVICE_URL_" . Str::of($resource->name)->upper(); - $generatedEnv = EnvironmentVariable::where('service_id', $resource->service_id)->where('key', $variableName)->first(); - if ($generatedEnv) { - $url = Str::of($resource->fqdn)->after('://'); - $generatedEnv->value = $url; - $generatedEnv->save(); + if (!str($resource->fqdn)->contains(',')) { + // Update FQDN + $variableName = "SERVICE_FQDN_" . Str::of($resource->name)->upper(); + $generatedEnv = EnvironmentVariable::where('service_id', $resource->service_id)->where('key', $variableName)->first(); + if ($generatedEnv) { + $generatedEnv->value = $resource->fqdn; + $generatedEnv->save(); + } + $variableName = "SERVICE_URL_" . Str::of($resource->name)->upper(); + $generatedEnv = EnvironmentVariable::where('service_id', $resource->service_id)->where('key', $variableName)->first(); + if ($generatedEnv) { + $url = Str::of($resource->fqdn)->after('://'); + $generatedEnv->value = $url; + $generatedEnv->save(); + } } $dockerComposeRaw = Yaml::dump($dockerCompose, 10, 2); diff --git a/config/sentry.php b/config/sentry.php index 3a9aa3df6..c889afb12 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.122', + 'release' => '4.0.0-beta.123', // 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 5a47704b8..f31b19ca0 100644 --- a/config/version.php +++ b/config/version.php @@ -1,3 +1,3 @@