From fc027be2481aa04cc87dec52c208257571e0da2b Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Tue, 3 Nov 2026 20:36:26 +0100 Subject: [PATCH] fix(compose): warn when the Compose file is in a subdirectory of the base directory Closes #9525 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 1 + .../forms/repository-paths.blade.php | 25 +++++++++++++++++++ .../project/application/general.blade.php | 2 +- .../new/gitea-private-repository.blade.php | 2 +- ...ub-private-repository-deploy-key.blade.php | 2 +- .../new/github-private-repository.blade.php | 2 +- .../new/gitlab-private-repository.blade.php | 2 +- .../new/public-git-repository.blade.php | 2 +- 8 files changed, 32 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f06395fa6..a4510fb064 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), - Add an opt-in setting to also stop an older webhook deployment that is still building when a newer push arrives. A deployment that already started to replace containers always finishes. The applications API sets it with `is_auto_cancel_building_deployments_enabled` - Add `cancel_previous` (`none`, `queued`, or `building`) to `/api/v1/deploy` and the MCP `deploy` tool, so a deployment from the API or MCP can cancel the older webhook, API, and MCP deployments of the same application, pull request, and server. The default is `none`. Manual, restart, and rollback deployments are never cancelled - Show "Not used" on the TLS certificates of the Traefik proxy page when no route and no resource on the server uses the domain, and add a **Delete unused** button that deletes all of them in one step. Traefik renews every certificate in `acme.json`, also after you delete the resource, until you delete the certificate and restart the proxy ([#12447](https://github.com/coollabsio/coolify/issues/12447)) +- Show a warning when the Docker Compose file of an application is in a subdirectory of the base directory. Coolify runs Docker Compose in the base directory, so relative paths in the file, such as `build.context: ..`, resolve from the base directory and not from the directory of the file. A button moves the directory of the file into the base directory, for example base directory `/docker` and Compose location `/docker-compose.yml` ([#9525](https://github.com/coollabsio/coolify/issues/9525)) - Add a **Skip TLS certificate verification** setting to S3 storages, for endpoints with a self-signed or private CA certificate, for example a MinIO server on an internal network. Before, the connection test failed with "cURL error 60", because the Coolify container and the backup helper do not use the CA certificates of the host. The setting applies to the connection test, backups, restores, and the deletion of old backups. The S3 storages API sets it with `skip_tls_verification`. Browsers that download files from the storage must still trust the certificate ([#9762](https://github.com/coollabsio/coolify/issues/9762), [#4402](https://github.com/coollabsio/coolify/issues/4402)) ### Changed diff --git a/resources/views/components/forms/repository-paths.blade.php b/resources/views/components/forms/repository-paths.blade.php index 36bd6da4fd..7e884c258c 100644 --- a/resources/views/components/forms/repository-paths.blade.php +++ b/resources/views/components/forms/repository-paths.blade.php @@ -3,6 +3,7 @@ 'file' => null, 'fileLabel' => null, 'defaultFile' => null, + 'compose' => false, 'disabled' => 'false', ]) @@ -25,6 +26,17 @@ get suggestion() { return this.location.slice(this.directory.length); }, + get fileDirectory() { + return this.location.slice(0, this.location.lastIndexOf('/')); + }, + get composeInSubdirectory() { + return this.fileDirectory !== '' && !this.repeatsBase; + }, + useFileDirectoryAsBase() { + const fileDirectory = this.fileDirectory; + this.file = this.location.slice(fileDirectory.length); + this.base = this.directory + fileDirectory; + }, }"> Use + @if ($compose) + + Docker Compose runs in the base directory + , + not in the directory of the Compose file. Relative paths in the file, such as a build context of + .., resolve from the base directory. + If these paths are relative to the Compose file, set the base directory to + . + + + @endif @endif {{ $slot }} diff --git a/resources/views/livewire/project/application/general.blade.php b/resources/views/livewire/project/application/general.blade.php index 8ef260d19d..a5fd0ecdd6 100644 --- a/resources/views/livewire/project/application/general.blade.php +++ b/resources/views/livewire/project/application/general.blade.php @@ -215,7 +215,7 @@ @if ($buildPack === 'dockercompose')
@else @else @else @else @else