coolify/app/Actions/Server/InstallDocker.php

64 lines
2.6 KiB
PHP
Raw Normal View History

2023-05-04 09:11:11 +02:00
<?php
namespace App\Actions\Server;
use App\Models\Server;
2023-06-23 09:58:15 +02:00
use App\Models\StandaloneDocker;
2023-05-04 09:11:11 +02:00
class InstallDocker
{
2023-09-18 11:21:10 +02:00
public function __invoke(Server $server, bool $instant = false)
2023-05-04 09:11:11 +02:00
{
2023-09-05 15:43:56 +02:00
$dockerVersion = '24.0';
$config = base64_encode('{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}');
$found = StandaloneDocker::where('server_id', $server->id);
2023-09-18 10:44:32 +02:00
if ($found->count() == 0 && $server->id) {
StandaloneDocker::create([
'name' => 'coolify',
'network' => 'coolify',
'server_id' => $server->id,
]);
}
2023-09-18 11:21:10 +02:00
if (isDev() && $server->id === 0) {
$command = [
"echo '####### Installing Prerequisites...'",
"sleep 1",
"echo '####### Installing/updating Docker Engine...'",
"echo '####### Configuring Docker Engine (merging existing configuration with the required)...'",
"sleep 4",
"echo '####### Restarting Docker Engine...'",
"ls -l /tmp"
2023-09-18 11:21:10 +02:00
];
2023-08-23 10:14:39 +02:00
} else {
2023-09-18 11:21:10 +02:00
$command = [
"echo '####### Installing Prerequisites...'",
2023-08-23 10:14:39 +02:00
"command -v jq >/dev/null || apt-get update",
"command -v jq >/dev/null || apt install -y jq",
"echo '####### Installing/updating Docker Engine...'",
2023-08-23 10:14:39 +02:00
"curl https://releases.rancher.com/install-docker/{$dockerVersion}.sh | sh",
"echo '####### Configuring Docker Engine (merging existing configuration with the required)...'",
2023-08-23 10:14:39 +02:00
"test -s /etc/docker/daemon.json && cp /etc/docker/daemon.json \"/etc/docker/daemon.json.original-`date +\"%Y%m%d-%H%M%S\"`\" || echo '{$config}' | base64 -d > /etc/docker/daemon.json",
"echo '{$config}' | base64 -d > /etc/docker/daemon.json.coolify",
"cat <<< $(jq . /etc/docker/daemon.json.coolify) > /etc/docker/daemon.json.coolify",
"cat <<< $(jq -s '.[0] * .[1]' /etc/docker/daemon.json /etc/docker/daemon.json.coolify) > /etc/docker/daemon.json",
"echo '####### Restarting Docker Engine...'",
2023-08-23 10:14:39 +02:00
"systemctl restart docker",
"echo '####### Creating default Docker network (coolify)...'",
"docker network create --attachable coolify >/dev/null 2>&1 || true",
"echo '####### Done!'"
2023-09-18 11:21:10 +02:00
];
}
if ($instant) {
return instant_remote_process($command, $server);
2023-08-23 10:14:39 +02:00
}
2023-09-18 11:21:10 +02:00
return remote_process($command, $server);
2023-05-04 09:11:11 +02:00
}
}