fix: copy large compose files through scp (not ssh)

This commit is contained in:
Andras Bacsai 2024-09-03 11:47:30 +02:00
parent dfd5cc9cef
commit a7d67e44ca
2 changed files with 12 additions and 8 deletions

View File

@ -7,9 +7,10 @@
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Storage;
use OpenApi\Attributes as OA; use OpenApi\Attributes as OA;
use Spatie\Url\Url; use Spatie\Url\Url;
use Symfony\Component\Yaml\Yaml; use Visus\Cuid2\Cuid2;
#[OA\Schema( #[OA\Schema(
description: 'Service model', description: 'Service model',
@ -999,14 +1000,18 @@ public function workdir()
public function saveComposeConfigs() public function saveComposeConfigs()
{ {
$workdir = $this->workdir(); $workdir = $this->workdir();
$commands[] = "mkdir -p $workdir";
$commands[] = "cd $workdir";
$json = Yaml::parse($this->docker_compose); instant_remote_process([
$this->docker_compose = Yaml::dump($json, 10, 2, Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK); "mkdir -p $workdir",
$docker_compose_base64 = base64_encode($this->docker_compose); "cd $workdir",
], $this->server);
$filename = new Cuid2.'-docker-compose.yml';
Storage::disk('local')->put("tmp/{$filename}", $this->docker_compose);
$path = Storage::path("tmp/{$filename}");
instant_scp($path, "{$workdir}/docker-compose.yml", $this->server);
Storage::disk('local')->delete("tmp/{$filename}");
$commands[] = "echo $docker_compose_base64 | base64 -d | tee docker-compose.yml > /dev/null";
$commands[] = 'rm -f .env || true'; $commands[] = 'rm -f .env || true';
$envs_from_coolify = $this->environment_variables()->get(); $envs_from_coolify = $this->environment_variables()->get();

View File

@ -3544,7 +3544,6 @@ function newParser(Application|Service $resource, int $pull_request_id = 0, ?int
$parsedServices->put($serviceName, $payload); $parsedServices->put($serviceName, $payload);
} }
ray($parsedServices);
$topLevel->put('services', $parsedServices); $topLevel->put('services', $parsedServices);
$customOrder = ['services', 'volumes', 'networks', 'configs', 'secrets']; $customOrder = ['services', 'volumes', 'networks', 'configs', 'secrets'];