fix: get swarm service logs
This commit is contained in:
		@@ -73,10 +73,18 @@ class GetLogs extends Component
 | 
			
		||||
        if (!$refresh && $this->resource?->getMorphClass() === 'App\Models\Service') return;
 | 
			
		||||
        if ($this->container) {
 | 
			
		||||
            if ($this->showTimeStamps) {
 | 
			
		||||
                if ($this->server->isSwarm()) {
 | 
			
		||||
                    $sshCommand = generateSshCommand($this->server, "docker service logs -n {$this->numberOfLines} -t {$this->container}");
 | 
			
		||||
                } else {
 | 
			
		||||
                    $sshCommand = generateSshCommand($this->server, "docker logs -n {$this->numberOfLines} -t {$this->container}");
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                if ($this->server->isSwarm()) {
 | 
			
		||||
                    $sshCommand = generateSshCommand($this->server, "docker service logs -n {$this->numberOfLines} {$this->container}");
 | 
			
		||||
                } else {
 | 
			
		||||
                    $sshCommand = generateSshCommand($this->server, "docker logs -n {$this->numberOfLines} {$this->container}");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if ($refresh) {
 | 
			
		||||
                $this->outputs = '';
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,15 @@ class Logs extends Component
 | 
			
		||||
            $this->resource = Application::where('uuid', $this->parameters['application_uuid'])->firstOrFail();
 | 
			
		||||
            $this->status = $this->resource->status;
 | 
			
		||||
            $this->server = $this->resource->destination->server;
 | 
			
		||||
            if ($this->server->isSwarm()) {
 | 
			
		||||
                $containers = collect([
 | 
			
		||||
                    [
 | 
			
		||||
                        'Names' => $this->resource->uuid . '_' . $this->resource->uuid,
 | 
			
		||||
                    ]
 | 
			
		||||
                ]);
 | 
			
		||||
            } else {
 | 
			
		||||
                $containers = getCurrentApplicationContainerStatus($this->server, $this->resource->id, 0);
 | 
			
		||||
            }
 | 
			
		||||
            if ($containers->count() > 0) {
 | 
			
		||||
                $containers->each(function ($container) {
 | 
			
		||||
                    $this->containers->push(str_replace('/', '', $container['Names']));
 | 
			
		||||
@@ -62,7 +70,7 @@ class Logs extends Component
 | 
			
		||||
            $this->status = $this->resource->status;
 | 
			
		||||
            $this->server = $this->resource->destination->server;
 | 
			
		||||
            $this->container = $this->resource->uuid;
 | 
			
		||||
            if (str(data_get($this,'resource.status'))->startsWith('running')) {
 | 
			
		||||
            if (str(data_get($this, 'resource.status'))->startsWith('running')) {
 | 
			
		||||
                $this->containers->push($this->container);
 | 
			
		||||
            }
 | 
			
		||||
        } else if (data_get($this->parameters, 'service_uuid')) {
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ use Visus\Cuid2\Cuid2;
 | 
			
		||||
function getCurrentApplicationContainerStatus(Server $server, int $id, ?int $pullRequestId = null): Collection
 | 
			
		||||
{
 | 
			
		||||
    $containers = collect([]);
 | 
			
		||||
    if (!$server->isSwarm()) {
 | 
			
		||||
        $containers = instant_remote_process(["docker ps -a --filter='label=coolify.applicationId={$id}' --format '{{json .}}' "], $server);
 | 
			
		||||
        $containers = format_docker_command_output_to_json($containers);
 | 
			
		||||
        $containers = $containers->map(function ($container) use ($pullRequestId) {
 | 
			
		||||
@@ -29,6 +30,8 @@ function getCurrentApplicationContainerStatus(Server $server, int $id, ?int $pul
 | 
			
		||||
        });
 | 
			
		||||
        $containers = $containers->filter();
 | 
			
		||||
        return $containers;
 | 
			
		||||
    }
 | 
			
		||||
    return $containers;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function format_docker_command_output_to_json($rawOutput): Collection
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ return [
 | 
			
		||||
 | 
			
		||||
    // The release version of your application
 | 
			
		||||
    // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
 | 
			
		||||
    'release' => '4.0.0-beta.166',
 | 
			
		||||
    'release' => '4.0.0-beta.167',
 | 
			
		||||
    // When left empty or `null` the Laravel environment will be used
 | 
			
		||||
    'environment' => config('app.env'),
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
return '4.0.0-beta.166';
 | 
			
		||||
return '4.0.0-beta.167';
 | 
			
		||||
 
 | 
			
		||||
@@ -3,10 +3,12 @@
 | 
			
		||||
        href="{{ route('project.application.configuration', $parameters) }}">
 | 
			
		||||
        <button>Configuration</button>
 | 
			
		||||
    </a>
 | 
			
		||||
    @if(!$application->destination->server->isSwarm())
 | 
			
		||||
    <a wire:navigate class="{{ request()->routeIs('project.application.command') ? 'text-white' : '' }}"
 | 
			
		||||
        href="{{ route('project.application.command', $parameters) }}">
 | 
			
		||||
        <button>Execute Command</button>
 | 
			
		||||
    </a>
 | 
			
		||||
    @endif
 | 
			
		||||
    <a wire:navigate class="{{ request()->routeIs('project.application.logs') ? 'text-white' : '' }}"
 | 
			
		||||
        href="{{ route('project.application.logs', $parameters) }}">
 | 
			
		||||
        <button>Logs</button>
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
            "version": "3.12.36"
 | 
			
		||||
        },
 | 
			
		||||
        "v4": {
 | 
			
		||||
            "version": "4.0.0-beta.166"
 | 
			
		||||
            "version": "4.0.0-beta.167"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user