refactor: Reset default labels when docker_compose_domains is modified

This commit is contained in:
Andras Bacsai 2024-07-12 10:35:50 +02:00
parent d2693c1ac8
commit c851262d81
2 changed files with 13 additions and 4 deletions

View File

@ -350,7 +350,6 @@ class General extends Component
$this->checkFqdns(); $this->checkFqdns();
$this->application->save(); $this->application->save();
if (! $this->customLabels && $this->application->destination->server->proxyType() !== 'NONE') { if (! $this->customLabels && $this->application->destination->server->proxyType() !== 'NONE') {
$this->customLabels = str(implode('|coolify|', generateLabelsApplication($this->application)))->replace('|coolify|', "\n"); $this->customLabels = str(implode('|coolify|', generateLabelsApplication($this->application)))->replace('|coolify|', "\n");
$this->application->custom_labels = base64_encode($this->customLabels); $this->application->custom_labels = base64_encode($this->customLabels);
@ -364,6 +363,7 @@ class General extends Component
} }
} }
$this->validate(); $this->validate();
if ($this->ports_exposes !== $this->application->ports_exposes || $this->is_container_label_escape_enabled !== $this->application->settings->is_container_label_escape_enabled) { if ($this->ports_exposes !== $this->application->ports_exposes || $this->is_container_label_escape_enabled !== $this->application->settings->is_container_label_escape_enabled) {
$this->resetDefaultLabels(); $this->resetDefaultLabels();
} }
@ -390,6 +390,7 @@ class General extends Component
} }
if ($this->application->build_pack === 'dockercompose') { if ($this->application->build_pack === 'dockercompose') {
$this->application->docker_compose_domains = json_encode($this->parsedServiceDomains); $this->application->docker_compose_domains = json_encode($this->parsedServiceDomains);
foreach ($this->parsedServiceDomains as $serviceName => $service) { foreach ($this->parsedServiceDomains as $serviceName => $service) {
$domain = data_get($service, 'domain'); $domain = data_get($service, 'domain');
if ($domain) { if ($domain) {
@ -399,6 +400,9 @@ class General extends Component
check_domain_usage(resource: $this->application); check_domain_usage(resource: $this->application);
} }
} }
if ($this->application->isDirty('docker_compose_domains')) {
$this->resetDefaultLabels();
}
} }
$this->application->custom_labels = base64_encode($this->customLabels); $this->application->custom_labels = base64_encode($this->customLabels);
$this->application->save(); $this->application->save();

View File

@ -2027,14 +2027,20 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal
domains: $fqdns, domains: $fqdns,
serviceLabels: $serviceLabels, serviceLabels: $serviceLabels,
generate_unique_uuid: $resource->build_pack === 'dockercompose', generate_unique_uuid: $resource->build_pack === 'dockercompose',
image: data_get($service, 'image') image: data_get($service, 'image'),
is_force_https_enabled: $resource->isForceHttpsEnabled(),
is_gzip_enabled: $resource->isGzipEnabled(),
is_stripprefix_enabled: $resource->isStripprefixEnabled(),
)); ));
$serviceLabels = $serviceLabels->merge(fqdnLabelsForCaddy( $serviceLabels = $serviceLabels->merge(fqdnLabelsForCaddy(
network: $resource->destination->network, network: $resource->destination->network,
uuid: $resource->uuid, uuid: $resource->uuid,
domains: $fqdns, domains: $fqdns,
serviceLabels: $serviceLabels, serviceLabels: $serviceLabels,
image: data_get($service, 'image') image: data_get($service, 'image'),
is_force_https_enabled: $resource->isForceHttpsEnabled(),
is_gzip_enabled: $resource->isGzipEnabled(),
is_stripprefix_enabled: $resource->isStripprefixEnabled(),
)); ));
} }
} }
@ -2381,7 +2387,6 @@ function check_domain_usage(ServiceApplication|Application|null $resource = null
if ($resource) { if ($resource) {
if ($resource->getMorphClass() === 'App\Models\Application' && $resource->build_pack === 'dockercompose') { if ($resource->getMorphClass() === 'App\Models\Application' && $resource->build_pack === 'dockercompose') {
$domains = data_get(json_decode($resource->docker_compose_domains, true), '*.domain'); $domains = data_get(json_decode($resource->docker_compose_domains, true), '*.domain');
ray($domains);
$domains = collect($domains); $domains = collect($domains);
} else { } else {
$domains = collect($resource->fqdns); $domains = collect($resource->fqdns);