refactor: improve command handling and ensure correct working directory for Docker operations

This commit is contained in:
Andras Bacsai 2025-11-10 14:40:03 +01:00
parent d8878d868c
commit f5fa09790e

View file

@ -20,22 +20,23 @@ public function handle(Service $service, bool $pullLatestImages = false, bool $s
} }
$service->saveComposeConfigs(); $service->saveComposeConfigs();
$service->isConfigurationChanged(save: true); $service->isConfigurationChanged(save: true);
$commands[] = 'cd '.$service->workdir(); $workdir = $service->workdir();
$commands[] = "echo 'Saved configuration files to {$service->workdir()}.'"; // $commands[] = "cd {$workdir}";
// Ensure .env file exists before docker compose tries to load it $commands[] = "echo 'Saved configuration files to {$workdir}.'";
// Ensure .env exists in the correct directory before docker compose tries to load it
// This is defensive programming - saveComposeConfigs() already creates it, // This is defensive programming - saveComposeConfigs() already creates it,
// but we guarantee it here in case of any edge cases or manual deployments // but we guarantee it here in case of any edge cases or manual deployments
$commands[] = 'touch .env'; $commands[] = "touch {$workdir}/.env";
if ($pullLatestImages) { if ($pullLatestImages) {
$commands[] = "echo 'Pulling images.'"; $commands[] = "echo 'Pulling images.'";
$commands[] = 'docker compose pull'; $commands[] = "docker compose --project-directory {$workdir} pull";
} }
if ($service->networks()->count() > 0) { if ($service->networks()->count() > 0) {
$commands[] = "echo 'Creating Docker network.'"; $commands[] = "echo 'Creating Docker network.'";
$commands[] = "docker network inspect $service->uuid >/dev/null 2>&1 || docker network create --attachable $service->uuid"; $commands[] = "docker network inspect $service->uuid >/dev/null 2>&1 || docker network create --attachable $service->uuid";
} }
$commands[] = 'echo Starting service.'; $commands[] = 'echo Starting service.';
$commands[] = 'docker compose up -d --remove-orphans --force-recreate --build'; $commands[] = "docker compose --project-directory {$workdir} -f {$workdir}/docker-compose.yml --project-name {$service->uuid} up -d --remove-orphans --force-recreate --build";
$commands[] = "docker network connect $service->uuid coolify-proxy >/dev/null 2>&1 || true"; $commands[] = "docker network connect $service->uuid coolify-proxy >/dev/null 2>&1 || true";
if (data_get($service, 'connect_to_docker_network')) { if (data_get($service, 'connect_to_docker_network')) {
$compose = data_get($service, 'docker_compose', []); $compose = data_get($service, 'docker_compose', []);