feat(core): finally fqdn is fqdn and url is url. haha
This commit is contained in:
@@ -227,7 +227,19 @@ class General extends Component
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$this->application->parse();
|
|
||||||
|
// Refresh parsedServiceDomains to reflect any changes in docker_compose_domains
|
||||||
|
$this->application->refresh();
|
||||||
|
$this->parsedServiceDomains = $this->application->docker_compose_domains ? json_decode($this->application->docker_compose_domains, true) : [];
|
||||||
|
ray($this->parsedServiceDomains);
|
||||||
|
// Convert service names with dots to use underscores for HTML form binding
|
||||||
|
$sanitizedDomains = [];
|
||||||
|
foreach ($this->parsedServiceDomains as $serviceName => $domain) {
|
||||||
|
$sanitizedKey = str($serviceName)->slug('_')->toString();
|
||||||
|
$sanitizedDomains[$sanitizedKey] = $domain;
|
||||||
|
}
|
||||||
|
$this->parsedServiceDomains = $sanitizedDomains;
|
||||||
|
|
||||||
$showToast && $this->dispatch('success', 'Docker compose file loaded.');
|
$showToast && $this->dispatch('success', 'Docker compose file loaded.');
|
||||||
$this->dispatch('compose_loaded');
|
$this->dispatch('compose_loaded');
|
||||||
$this->dispatch('refreshStorages');
|
$this->dispatch('refreshStorages');
|
||||||
@@ -245,7 +257,7 @@ class General extends Component
|
|||||||
public function generateDomain(string $serviceName)
|
public function generateDomain(string $serviceName)
|
||||||
{
|
{
|
||||||
$uuid = new Cuid2;
|
$uuid = new Cuid2;
|
||||||
$domain = generateFqdn($this->application->destination->server, $uuid);
|
$domain = generateUrl(server: $this->application->destination->server, random: $uuid);
|
||||||
$sanitizedKey = str($serviceName)->slug('_')->toString();
|
$sanitizedKey = str($serviceName)->slug('_')->toString();
|
||||||
$this->parsedServiceDomains[$sanitizedKey]['domain'] = $domain;
|
$this->parsedServiceDomains[$sanitizedKey]['domain'] = $domain;
|
||||||
|
|
||||||
@@ -315,7 +327,7 @@ class General extends Component
|
|||||||
{
|
{
|
||||||
$server = data_get($this->application, 'destination.server');
|
$server = data_get($this->application, 'destination.server');
|
||||||
if ($server) {
|
if ($server) {
|
||||||
$fqdn = generateFqdn($server, $this->application->uuid);
|
$fqdn = generateFqdn(server: $server, random: $this->application->uuid, parserVersion: $this->application->compose_parsing_version);
|
||||||
$this->application->fqdn = $fqdn;
|
$this->application->fqdn = $fqdn;
|
||||||
$this->application->save();
|
$this->application->save();
|
||||||
$this->resetDefaultLabels();
|
$this->resetDefaultLabels();
|
||||||
|
@@ -48,7 +48,7 @@ class PreviewsCompose extends Component
|
|||||||
$random = new Cuid2;
|
$random = new Cuid2;
|
||||||
|
|
||||||
// Generate a unique domain like main app services do
|
// Generate a unique domain like main app services do
|
||||||
$generated_fqdn = generateFqdn($server, $random);
|
$generated_fqdn = generateFqdn(server: $server, random: $random, parserVersion: $this->preview->application->compose_parsing_version);
|
||||||
|
|
||||||
$preview_fqdn = str_replace('{{random}}', $random, $template);
|
$preview_fqdn = str_replace('{{random}}', $random, $template);
|
||||||
$preview_fqdn = str_replace('{{domain}}', str($generated_fqdn)->after('://'), $preview_fqdn);
|
$preview_fqdn = str_replace('{{domain}}', str($generated_fqdn)->after('://'), $preview_fqdn);
|
||||||
|
@@ -129,7 +129,7 @@ class CloneMe extends Component
|
|||||||
$uuid = (string) new Cuid2;
|
$uuid = (string) new Cuid2;
|
||||||
$url = $application->fqdn;
|
$url = $application->fqdn;
|
||||||
if ($this->server->proxyType() !== 'NONE' && $applicationSettings->is_container_label_readonly_enabled === true) {
|
if ($this->server->proxyType() !== 'NONE' && $applicationSettings->is_container_label_readonly_enabled === true) {
|
||||||
$url = generateFqdn($this->server, $uuid);
|
$url = generateFqdn(server: $this->server, random: $uuid, parserVersion: $application->compose_parsing_version);
|
||||||
}
|
}
|
||||||
|
|
||||||
$newApplication = $application->replicate([
|
$newApplication = $application->replicate([
|
||||||
|
@@ -102,7 +102,7 @@ class Create extends Component
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$service->parse(isNew: true, isOneClick: true);
|
$service->parse(isNew: true);
|
||||||
|
|
||||||
return redirect()->route('project.service.configuration', [
|
return redirect()->route('project.service.configuration', [
|
||||||
'service_uuid' => $service->uuid,
|
'service_uuid' => $service->uuid,
|
||||||
|
@@ -61,7 +61,7 @@ class ResourceOperations extends Component
|
|||||||
$url = $this->resource->fqdn;
|
$url = $this->resource->fqdn;
|
||||||
|
|
||||||
if ($server->proxyType() !== 'NONE' && $applicationSettings->is_container_label_readonly_enabled === true) {
|
if ($server->proxyType() !== 'NONE' && $applicationSettings->is_container_label_readonly_enabled === true) {
|
||||||
$url = generateFqdn($server, $uuid);
|
$url = generateFqdn(server: $server, random: $uuid, parserVersion: $this->resource->compose_parsing_version);
|
||||||
}
|
}
|
||||||
|
|
||||||
$new_resource = $this->resource->replicate([
|
$new_resource = $this->resource->replicate([
|
||||||
|
@@ -111,7 +111,7 @@ class Application extends BaseModel
|
|||||||
{
|
{
|
||||||
use HasConfiguration, HasFactory, SoftDeletes;
|
use HasConfiguration, HasFactory, SoftDeletes;
|
||||||
|
|
||||||
private static $parserVersion = '4';
|
private static $parserVersion = '5';
|
||||||
|
|
||||||
protected $guarded = [];
|
protected $guarded = [];
|
||||||
|
|
||||||
@@ -1442,7 +1442,21 @@ class Application extends BaseModel
|
|||||||
$parsedServices = $this->parse();
|
$parsedServices = $this->parse();
|
||||||
if ($this->docker_compose_domains) {
|
if ($this->docker_compose_domains) {
|
||||||
$json = collect(json_decode($this->docker_compose_domains));
|
$json = collect(json_decode($this->docker_compose_domains));
|
||||||
$names = collect(data_get($parsedServices, 'services'))->keys()->toArray();
|
foreach ($json as $key => $value) {
|
||||||
|
if (str($key)->contains('-')) {
|
||||||
|
$key = str($key)->replace('-', '_');
|
||||||
|
}
|
||||||
|
$json->put((string) $key, $value);
|
||||||
|
}
|
||||||
|
$services = collect(data_get($parsedServices, 'services', []));
|
||||||
|
foreach ($services as $name => $service) {
|
||||||
|
if (str($name)->contains('-')) {
|
||||||
|
$replacedName = str($name)->replace('-', '_');
|
||||||
|
$services->put((string) $replacedName, $service);
|
||||||
|
$services->forget((string) $name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$names = collect($services)->keys()->toArray();
|
||||||
$jsonNames = $json->keys()->toArray();
|
$jsonNames = $json->keys()->toArray();
|
||||||
$diff = array_diff($jsonNames, $names);
|
$diff = array_diff($jsonNames, $names);
|
||||||
$json = $json->filter(function ($value, $key) use ($diff) {
|
$json = $json->filter(function ($value, $key) use ($diff) {
|
||||||
|
@@ -42,7 +42,7 @@ class Service extends BaseModel
|
|||||||
{
|
{
|
||||||
use HasFactory, SoftDeletes;
|
use HasFactory, SoftDeletes;
|
||||||
|
|
||||||
private static $parserVersion = '4';
|
private static $parserVersion = '5';
|
||||||
|
|
||||||
protected $guarded = [];
|
protected $guarded = [];
|
||||||
|
|
||||||
@@ -1274,10 +1274,10 @@ class Service extends BaseModel
|
|||||||
instant_remote_process($commands, $this->server);
|
instant_remote_process($commands, $this->server);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function parse(bool $isNew = false, bool $isOneClick = false): Collection
|
public function parse(bool $isNew = false): Collection
|
||||||
{
|
{
|
||||||
if ((int) $this->compose_parsing_version >= 3) {
|
if ((int) $this->compose_parsing_version >= 3) {
|
||||||
return serviceParser($this, isOneClick: $isOneClick);
|
return serviceParser($this);
|
||||||
} elseif ($this->docker_compose_raw) {
|
} elseif ($this->docker_compose_raw) {
|
||||||
return parseDockerComposeFile($this, $isNew);
|
return parseDockerComposeFile($this, $isNew);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -256,12 +256,12 @@ function generateServiceSpecificFqdns(ServiceApplication|Application $resource)
|
|||||||
|
|
||||||
if (str($MINIO_BROWSER_REDIRECT_URL->value ?? '')->isEmpty()) {
|
if (str($MINIO_BROWSER_REDIRECT_URL->value ?? '')->isEmpty()) {
|
||||||
$MINIO_BROWSER_REDIRECT_URL->update([
|
$MINIO_BROWSER_REDIRECT_URL->update([
|
||||||
'value' => generateFqdn($server, 'console-'.$uuid, true),
|
'value' => generateFqdn(server: $server, random: 'console-'.$uuid, parserVersion: $resource->compose_parsing_version, forceHttps: true),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
if (str($MINIO_SERVER_URL->value ?? '')->isEmpty()) {
|
if (str($MINIO_SERVER_URL->value ?? '')->isEmpty()) {
|
||||||
$MINIO_SERVER_URL->update([
|
$MINIO_SERVER_URL->update([
|
||||||
'value' => generateFqdn($server, 'minio-'.$uuid, true),
|
'value' => generateFqdn(server: $server, random: 'minio-'.$uuid, parserVersion: $resource->compose_parsing_version, forceHttps: true),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
$payload = collect([
|
$payload = collect([
|
||||||
@@ -279,12 +279,12 @@ function generateServiceSpecificFqdns(ServiceApplication|Application $resource)
|
|||||||
|
|
||||||
if (str($LOGTO_ENDPOINT->value ?? '')->isEmpty()) {
|
if (str($LOGTO_ENDPOINT->value ?? '')->isEmpty()) {
|
||||||
$LOGTO_ENDPOINT->update([
|
$LOGTO_ENDPOINT->update([
|
||||||
'value' => generateFqdn($server, 'logto-'.$uuid),
|
'value' => generateFqdn(server: $server, random: 'logto-'.$uuid, parserVersion: $resource->compose_parsing_version),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
if (str($LOGTO_ADMIN_ENDPOINT->value ?? '')->isEmpty()) {
|
if (str($LOGTO_ADMIN_ENDPOINT->value ?? '')->isEmpty()) {
|
||||||
$LOGTO_ADMIN_ENDPOINT->update([
|
$LOGTO_ADMIN_ENDPOINT->update([
|
||||||
'value' => generateFqdn($server, 'logto-admin-'.$uuid),
|
'value' => generateFqdn(server: $server, random: 'logto-admin-'.$uuid, parserVersion: $resource->compose_parsing_version),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
$payload = collect([
|
$payload = collect([
|
||||||
|
@@ -16,7 +16,7 @@ use Spatie\Url\Url;
|
|||||||
use Symfony\Component\Yaml\Yaml;
|
use Symfony\Component\Yaml\Yaml;
|
||||||
use Visus\Cuid2\Cuid2;
|
use Visus\Cuid2\Cuid2;
|
||||||
|
|
||||||
function applicationParser(Application $resource, int $pull_request_id = 0, ?int $preview_id = null, bool $isOneClick = false): Collection
|
function applicationParser(Application $resource, int $pull_request_id = 0, ?int $preview_id = null): Collection
|
||||||
{
|
{
|
||||||
$uuid = data_get($resource, 'uuid');
|
$uuid = data_get($resource, 'uuid');
|
||||||
$compose = data_get($resource, 'docker_compose_raw');
|
$compose = data_get($resource, 'docker_compose_raw');
|
||||||
@@ -100,6 +100,7 @@ function applicationParser(Application $resource, int $pull_request_id = 0, ?int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Get magic environments where we need to preset the FQDN
|
// Get magic environments where we need to preset the FQDN
|
||||||
|
// for example SERVICE_FQDN_APP_3000 (without a value)
|
||||||
if ($key->startsWith('SERVICE_FQDN_')) {
|
if ($key->startsWith('SERVICE_FQDN_')) {
|
||||||
// SERVICE_FQDN_APP or SERVICE_FQDN_APP_3000
|
// SERVICE_FQDN_APP or SERVICE_FQDN_APP_3000
|
||||||
if (substr_count(str($key)->value(), '_') === 3) {
|
if (substr_count(str($key)->value(), '_') === 3) {
|
||||||
@@ -111,7 +112,7 @@ function applicationParser(Application $resource, int $pull_request_id = 0, ?int
|
|||||||
}
|
}
|
||||||
$fqdn = $resource->fqdn;
|
$fqdn = $resource->fqdn;
|
||||||
if (blank($resource->fqdn)) {
|
if (blank($resource->fqdn)) {
|
||||||
$fqdn = generateFqdn($server, "$uuid");
|
$fqdn = generateFqdn(server: $server, random: "$uuid", parserVersion: $resource->compose_parsing_version);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($value && get_class($value) === \Illuminate\Support\Stringable::class && $value->startsWith('/')) {
|
if ($value && get_class($value) === \Illuminate\Support\Stringable::class && $value->startsWith('/')) {
|
||||||
@@ -160,17 +161,18 @@ function applicationParser(Application $resource, int $pull_request_id = 0, ?int
|
|||||||
|
|
||||||
$allMagicEnvironments = $allMagicEnvironments->merge($magicEnvironments);
|
$allMagicEnvironments = $allMagicEnvironments->merge($magicEnvironments);
|
||||||
if ($magicEnvironments->count() > 0) {
|
if ($magicEnvironments->count() > 0) {
|
||||||
|
// Generate Coolify environment variables
|
||||||
foreach ($magicEnvironments as $key => $value) {
|
foreach ($magicEnvironments as $key => $value) {
|
||||||
$key = str($key);
|
$key = str($key);
|
||||||
$value = replaceVariables($value);
|
$value = replaceVariables($value);
|
||||||
$command = parseCommandFromMagicEnvVariable($key);
|
$command = parseCommandFromMagicEnvVariable($key);
|
||||||
if ($command->value() === 'FQDN') {
|
if ($command->value() === 'FQDN') {
|
||||||
if ($isOneClick) {
|
|
||||||
$fqdnFor = $key->after('SERVICE_FQDN_')->lower()->value();
|
$fqdnFor = $key->after('SERVICE_FQDN_')->lower()->value();
|
||||||
if (str($fqdnFor)->contains('_')) {
|
if (str($fqdnFor)->contains('-')) {
|
||||||
$fqdnFor = str($fqdnFor)->before('_');
|
$fqdnFor = str($fqdnFor)->replace('-', '_');
|
||||||
}
|
}
|
||||||
$fqdn = generateFqdn($server, "$fqdnFor-$uuid");
|
$fqdn = generateFqdn(server: $server, random: "$fqdnFor-$uuid", parserVersion: $resource->compose_parsing_version);
|
||||||
|
$url = generateUrl(server: $server, random: "$fqdnFor-$uuid");
|
||||||
$resource->environment_variables()->firstOrCreate([
|
$resource->environment_variables()->firstOrCreate([
|
||||||
'key' => $key->value(),
|
'key' => $key->value(),
|
||||||
'resourceable_type' => get_class($resource),
|
'resourceable_type' => get_class($resource),
|
||||||
@@ -180,24 +182,37 @@ function applicationParser(Application $resource, int $pull_request_id = 0, ?int
|
|||||||
'is_build_time' => false,
|
'is_build_time' => false,
|
||||||
'is_preview' => false,
|
'is_preview' => false,
|
||||||
]);
|
]);
|
||||||
|
if ($resource->build_pack === 'dockercompose') {
|
||||||
|
$domains = collect(json_decode(data_get($resource, 'docker_compose_domains'))) ?? collect([]);
|
||||||
|
// Put URL in the domains array instead of FQDN
|
||||||
|
$domains->put((string) $fqdnFor, [
|
||||||
|
'domain' => $url,
|
||||||
|
]);
|
||||||
|
$resource->docker_compose_domains = $domains->toJson();
|
||||||
|
$resource->save();
|
||||||
}
|
}
|
||||||
} elseif ($command->value() === 'URL') {
|
} elseif ($command->value() === 'URL') {
|
||||||
if ($isOneClick) {
|
$urlFor = $key->after('SERVICE_URL_')->lower()->value();
|
||||||
$fqdnFor = $key->after('SERVICE_URL_')->lower()->value();
|
if (str($urlFor)->contains('-')) {
|
||||||
if (str($fqdnFor)->contains('_')) {
|
$urlFor = str($urlFor)->replace('-', '_');
|
||||||
$fqdnFor = str($fqdnFor)->before('_');
|
|
||||||
}
|
}
|
||||||
$fqdn = generateFqdn($server, "$fqdnFor-$uuid");
|
$url = generateUrl(server: $server, random: "$urlFor-$uuid");
|
||||||
$fqdn = str($fqdn)->replace('http://', '')->replace('https://', '');
|
|
||||||
$resource->environment_variables()->firstOrCreate([
|
$resource->environment_variables()->firstOrCreate([
|
||||||
'key' => $key->value(),
|
'key' => $key->value(),
|
||||||
'resourceable_type' => get_class($resource),
|
'resourceable_type' => get_class($resource),
|
||||||
'resourceable_id' => $resource->id,
|
'resourceable_id' => $resource->id,
|
||||||
], [
|
], [
|
||||||
'value' => $fqdn,
|
'value' => $url,
|
||||||
'is_build_time' => false,
|
'is_build_time' => false,
|
||||||
'is_preview' => false,
|
'is_preview' => false,
|
||||||
]);
|
]);
|
||||||
|
if ($resource->build_pack === 'dockercompose') {
|
||||||
|
$domains = collect(json_decode(data_get($resource, 'docker_compose_domains'))) ?? collect([]);
|
||||||
|
$domains->put((string) $urlFor, [
|
||||||
|
'domain' => $url,
|
||||||
|
]);
|
||||||
|
$resource->docker_compose_domains = $domains->toJson();
|
||||||
|
$resource->save();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$value = generateEnvValue($command, $resource);
|
$value = generateEnvValue($command, $resource);
|
||||||
@@ -599,7 +614,6 @@ function applicationParser(Application $resource, int $pull_request_id = 0, ?int
|
|||||||
} else {
|
} else {
|
||||||
$domains = collect(json_decode($resource->docker_compose_domains)) ?? collect([]);
|
$domains = collect(json_decode($resource->docker_compose_domains)) ?? collect([]);
|
||||||
}
|
}
|
||||||
ray($domains);
|
|
||||||
$fqdns = data_get($domains, "$serviceName.domain");
|
$fqdns = data_get($domains, "$serviceName.domain");
|
||||||
// Generate SERVICE_FQDN & SERVICE_URL for dockercompose
|
// Generate SERVICE_FQDN & SERVICE_URL for dockercompose
|
||||||
if ($resource->build_pack === 'dockercompose') {
|
if ($resource->build_pack === 'dockercompose') {
|
||||||
@@ -849,7 +863,7 @@ function applicationParser(Application $resource, int $pull_request_id = 0, ?int
|
|||||||
return $topLevel;
|
return $topLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
function serviceParser(Service $resource, bool $isOneClick = false): Collection
|
function serviceParser(Service $resource): Collection
|
||||||
{
|
{
|
||||||
$uuid = data_get($resource, 'uuid');
|
$uuid = data_get($resource, 'uuid');
|
||||||
$compose = data_get($resource, 'docker_compose_raw');
|
$compose = data_get($resource, 'docker_compose_raw');
|
||||||
@@ -977,49 +991,86 @@ function serviceParser(Service $resource, bool $isOneClick = false): Collection
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Get magic environments where we need to preset the FQDN
|
// Get magic environments where we need to preset the FQDN
|
||||||
if ($key->startsWith('SERVICE_FQDN_')) {
|
if ($key->startsWith('SERVICE_FQDN_') || $key->startsWith('SERVICE_URL_')) {
|
||||||
// SERVICE_FQDN_APP or SERVICE_FQDN_APP_3000
|
// SERVICE_FQDN_APP or SERVICE_FQDN_APP_3000
|
||||||
if (substr_count(str($key)->value(), '_') === 3) {
|
if (substr_count(str($key)->value(), '_') === 3) {
|
||||||
|
if ($key->startsWith('SERVICE_FQDN_')) {
|
||||||
|
$urlFor = null;
|
||||||
$fqdnFor = $key->after('SERVICE_FQDN_')->beforeLast('_')->lower()->value();
|
$fqdnFor = $key->after('SERVICE_FQDN_')->beforeLast('_')->lower()->value();
|
||||||
|
}
|
||||||
|
if ($key->startsWith('SERVICE_URL_')) {
|
||||||
|
$fqdnFor = null;
|
||||||
|
$urlFor = $key->after('SERVICE_URL_')->beforeLast('_')->lower()->value();
|
||||||
|
}
|
||||||
$port = $key->afterLast('_')->value();
|
$port = $key->afterLast('_')->value();
|
||||||
} else {
|
} else {
|
||||||
|
if ($key->startsWith('SERVICE_FQDN_')) {
|
||||||
|
$urlFor = null;
|
||||||
$fqdnFor = $key->after('SERVICE_FQDN_')->lower()->value();
|
$fqdnFor = $key->after('SERVICE_FQDN_')->lower()->value();
|
||||||
|
}
|
||||||
|
if ($key->startsWith('SERVICE_URL_')) {
|
||||||
|
$fqdnFor = null;
|
||||||
|
$urlFor = $key->after('SERVICE_URL_')->lower()->value();
|
||||||
|
}
|
||||||
$port = null;
|
$port = null;
|
||||||
}
|
}
|
||||||
if ($isOneClick) {
|
// if ($isOneClick) {
|
||||||
if (blank($savedService->fqdn)) {
|
if (blank($savedService->fqdn)) {
|
||||||
if ($fqdnFor) {
|
if ($fqdnFor) {
|
||||||
$fqdn = generateFqdn($server, "$fqdnFor-$uuid");
|
$fqdn = generateFqdn(server: $server, random: "$fqdnFor-$uuid", parserVersion: $resource->compose_parsing_version);
|
||||||
} else {
|
} else {
|
||||||
$fqdn = generateFqdn($server, "{$savedService->name}-$uuid");
|
$fqdn = generateFqdn(server: $server, random: "{$savedService->name}-$uuid", parserVersion: $resource->compose_parsing_version);
|
||||||
|
}
|
||||||
|
if ($urlFor) {
|
||||||
|
$url = generateUrl($server, "$urlFor-$uuid");
|
||||||
|
} else {
|
||||||
|
$url = generateUrl($server, "{$savedService->name}-$uuid");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$fqdn = str($savedService->fqdn)->after('://')->before(':')->prepend(str($savedService->fqdn)->before('://')->append('://'))->value();
|
$fqdn = str($savedService->fqdn)->after('://')->before(':')->prepend(str($savedService->fqdn)->before('://')->append('://'))->value();
|
||||||
|
$url = str($savedService->fqdn)->after('://')->before(':')->prepend(str($savedService->fqdn)->before('://')->append('://'))->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
// } else {
|
||||||
// For services which are not one-click, if no explicit FQDN is set, leave SERVICE_FQDN_ variables empty
|
// // For services which are not one-click, if no explicit FQDN is set, leave SERVICE_FQDN_ variables empty
|
||||||
if (blank($savedService->fqdn)) {
|
// if (blank($savedService->fqdn)) {
|
||||||
$fqdn = '';
|
// $fqdn = '';
|
||||||
} else {
|
// } else {
|
||||||
$fqdn = str($savedService->fqdn)->after('://')->before(':')->prepend(str($savedService->fqdn)->before('://')->append('://'))->value();
|
// $fqdn = str($savedService->fqdn)->after('://')->before(':')->prepend(str($savedService->fqdn)->before('://')->append('://'))->value();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if ($value && get_class($value) === \Illuminate\Support\Stringable::class && $value->startsWith('/')) {
|
if ($value && get_class($value) === \Illuminate\Support\Stringable::class && $value->startsWith('/')) {
|
||||||
$path = $value->value();
|
$path = $value->value();
|
||||||
if ($path !== '/') {
|
if ($path !== '/') {
|
||||||
$fqdn = "$fqdn$path";
|
$fqdn = "$fqdn$path";
|
||||||
|
$url = "$url$path";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$fqdnWithPort = $fqdn;
|
$fqdnWithPort = $fqdn;
|
||||||
if ($port) {
|
$urlWithPort = $url;
|
||||||
|
if ($fqdn && $port) {
|
||||||
$fqdnWithPort = "$fqdn:$port";
|
$fqdnWithPort = "$fqdn:$port";
|
||||||
}
|
}
|
||||||
|
if ($url && $port) {
|
||||||
|
$urlWithPort = "$url:$port";
|
||||||
|
}
|
||||||
|
ray("urlWithPort: $urlWithPort, fqdnWithPort: $fqdnWithPort", "parserVersion: $resource->compose_parsing_version", 'isVersionGreaterThan4207: '.version_compare('4.0.0-beta.420.7', config('constants.coolify.version'), '>='));
|
||||||
if (is_null($savedService->fqdn)) {
|
if (is_null($savedService->fqdn)) {
|
||||||
|
if ((int) $resource->compose_parsing_version >= 5 && version_compare(config('constants.coolify.version'), '4.0.0-beta.420.7', '>=')) {
|
||||||
|
if ($fqdnFor) {
|
||||||
|
ray("setting fqdn(fqdnWithPort) to $fqdnWithPort");
|
||||||
$savedService->fqdn = $fqdnWithPort;
|
$savedService->fqdn = $fqdnWithPort;
|
||||||
|
}
|
||||||
|
if ($urlFor) {
|
||||||
|
ray("setting fqdn(urlWithPort) to $urlWithPort");
|
||||||
|
$savedService->fqdn = $urlWithPort;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ray("setting fqdn(fqdnWithPort) old parser version to $fqdnWithPort");
|
||||||
|
$savedService->fqdn = $fqdnWithPort;
|
||||||
|
}
|
||||||
$savedService->save();
|
$savedService->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (substr_count(str($key)->value(), '_') === 2) {
|
if (substr_count(str($key)->value(), '_') === 2) {
|
||||||
$resource->environment_variables()->updateOrCreate([
|
$resource->environment_variables()->updateOrCreate([
|
||||||
'key' => $key->value(),
|
'key' => $key->value(),
|
||||||
@@ -1030,6 +1081,15 @@ function serviceParser(Service $resource, bool $isOneClick = false): Collection
|
|||||||
'is_build_time' => false,
|
'is_build_time' => false,
|
||||||
'is_preview' => false,
|
'is_preview' => false,
|
||||||
]);
|
]);
|
||||||
|
$resource->environment_variables()->updateOrCreate([
|
||||||
|
'key' => $key->value(),
|
||||||
|
'resourceable_type' => get_class($resource),
|
||||||
|
'resourceable_id' => $resource->id,
|
||||||
|
], [
|
||||||
|
'value' => $url,
|
||||||
|
'is_build_time' => false,
|
||||||
|
'is_preview' => false,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
if (substr_count(str($key)->value(), '_') === 3) {
|
if (substr_count(str($key)->value(), '_') === 3) {
|
||||||
$newKey = str($key)->beforeLast('_');
|
$newKey = str($key)->beforeLast('_');
|
||||||
@@ -1042,6 +1102,15 @@ function serviceParser(Service $resource, bool $isOneClick = false): Collection
|
|||||||
'is_build_time' => false,
|
'is_build_time' => false,
|
||||||
'is_preview' => false,
|
'is_preview' => false,
|
||||||
]);
|
]);
|
||||||
|
$resource->environment_variables()->updateOrCreate([
|
||||||
|
'key' => $newKey->value(),
|
||||||
|
'resourceable_type' => get_class($resource),
|
||||||
|
'resourceable_id' => $resource->id,
|
||||||
|
], [
|
||||||
|
'value' => $url,
|
||||||
|
'is_build_time' => false,
|
||||||
|
'is_preview' => false,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1053,12 +1122,11 @@ function serviceParser(Service $resource, bool $isOneClick = false): Collection
|
|||||||
$value = replaceVariables($value);
|
$value = replaceVariables($value);
|
||||||
$command = parseCommandFromMagicEnvVariable($key);
|
$command = parseCommandFromMagicEnvVariable($key);
|
||||||
if ($command->value() === 'FQDN') {
|
if ($command->value() === 'FQDN') {
|
||||||
if ($isOneClick) {
|
|
||||||
$fqdnFor = $key->after('SERVICE_FQDN_')->lower()->value();
|
$fqdnFor = $key->after('SERVICE_FQDN_')->lower()->value();
|
||||||
if (str($fqdnFor)->contains('_')) {
|
if (str($fqdnFor)->contains('_')) {
|
||||||
$fqdnFor = str($fqdnFor)->before('_');
|
$fqdnFor = str($fqdnFor)->before('_');
|
||||||
}
|
}
|
||||||
$fqdn = generateFqdn($server, "$fqdnFor-$uuid");
|
$fqdn = generateFqdn(server: $server, random: "$fqdnFor-$uuid", parserVersion: $resource->compose_parsing_version);
|
||||||
$resource->environment_variables()->firstOrCreate([
|
$resource->environment_variables()->firstOrCreate([
|
||||||
'key' => $key->value(),
|
'key' => $key->value(),
|
||||||
'resourceable_type' => get_class($resource),
|
'resourceable_type' => get_class($resource),
|
||||||
@@ -1068,14 +1136,12 @@ function serviceParser(Service $resource, bool $isOneClick = false): Collection
|
|||||||
'is_build_time' => false,
|
'is_build_time' => false,
|
||||||
'is_preview' => false,
|
'is_preview' => false,
|
||||||
]);
|
]);
|
||||||
}
|
|
||||||
} elseif ($command->value() === 'URL') {
|
} elseif ($command->value() === 'URL') {
|
||||||
if ($isOneClick) {
|
|
||||||
$fqdnFor = $key->after('SERVICE_URL_')->lower()->value();
|
$fqdnFor = $key->after('SERVICE_URL_')->lower()->value();
|
||||||
if (str($fqdnFor)->contains('_')) {
|
if (str($fqdnFor)->contains('_')) {
|
||||||
$fqdnFor = str($fqdnFor)->before('_');
|
$fqdnFor = str($fqdnFor)->before('_');
|
||||||
}
|
}
|
||||||
$fqdn = generateFqdn($server, "$fqdnFor-$uuid");
|
$fqdn = generateFqdn(server: $server, random: "$fqdnFor-$uuid", parserVersion: $resource->compose_parsing_version);
|
||||||
$fqdn = str($fqdn)->replace('http://', '')->replace('https://', '');
|
$fqdn = str($fqdn)->replace('http://', '')->replace('https://', '');
|
||||||
$resource->environment_variables()->firstOrCreate([
|
$resource->environment_variables()->firstOrCreate([
|
||||||
'key' => $key->value(),
|
'key' => $key->value(),
|
||||||
@@ -1086,7 +1152,6 @@ function serviceParser(Service $resource, bool $isOneClick = false): Collection
|
|||||||
'is_build_time' => false,
|
'is_build_time' => false,
|
||||||
'is_preview' => false,
|
'is_preview' => false,
|
||||||
]);
|
]);
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
$value = generateEnvValue($command, $resource);
|
$value = generateEnvValue($command, $resource);
|
||||||
$resource->environment_variables()->firstOrCreate([
|
$resource->environment_variables()->firstOrCreate([
|
||||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user