2023-05-04 07:11:11 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Actions\Server;
|
|
|
|
|
2023-10-09 09:00:18 +00:00
|
|
|
use Lorisleiva\Actions\Concerns\AsAction;
|
2023-05-04 07:11:11 +00:00
|
|
|
use App\Models\Server;
|
2023-06-23 07:58:15 +00:00
|
|
|
use App\Models\StandaloneDocker;
|
2023-05-04 07:11:11 +00:00
|
|
|
|
|
|
|
class InstallDocker
|
|
|
|
{
|
2023-10-09 09:00:18 +00:00
|
|
|
use AsAction;
|
|
|
|
public function handle(Server $server)
|
2023-05-04 07:11:11 +00:00
|
|
|
{
|
2023-09-05 13:43:56 +00:00
|
|
|
$dockerVersion = '24.0';
|
|
|
|
$config = base64_encode('{
|
|
|
|
"log-driver": "json-file",
|
|
|
|
"log-opts": {
|
|
|
|
"max-size": "10m",
|
|
|
|
"max-file": "3"
|
|
|
|
}
|
|
|
|
}');
|
2023-09-09 13:30:46 +00:00
|
|
|
$found = StandaloneDocker::where('server_id', $server->id);
|
2023-09-18 08:44:32 +00:00
|
|
|
if ($found->count() == 0 && $server->id) {
|
2023-09-09 13:30:46 +00:00
|
|
|
StandaloneDocker::create([
|
|
|
|
'name' => 'coolify',
|
|
|
|
'network' => 'coolify',
|
|
|
|
'server_id' => $server->id,
|
|
|
|
]);
|
|
|
|
}
|
2023-09-18 09:21:10 +00:00
|
|
|
|
|
|
|
if (isDev() && $server->id === 0) {
|
|
|
|
$command = [
|
2023-09-09 13:30:46 +00:00
|
|
|
"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 09:21:10 +00:00
|
|
|
];
|
2023-08-23 08:14:39 +00:00
|
|
|
} else {
|
2023-09-18 09:21:10 +00:00
|
|
|
$command = [
|
2023-09-09 13:30:46 +00:00
|
|
|
"echo '####### Installing Prerequisites...'",
|
2023-08-23 08:14:39 +00:00
|
|
|
"command -v jq >/dev/null || apt-get update",
|
|
|
|
"command -v jq >/dev/null || apt install -y jq",
|
2023-09-09 13:30:46 +00:00
|
|
|
"echo '####### Installing/updating Docker Engine...'",
|
2023-08-23 08:14:39 +00:00
|
|
|
"curl https://releases.rancher.com/install-docker/{$dockerVersion}.sh | sh",
|
2023-09-09 13:30:46 +00:00
|
|
|
"echo '####### Configuring Docker Engine (merging existing configuration with the required)...'",
|
2023-08-23 08:14:39 +00: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",
|
2023-09-09 13:30:46 +00:00
|
|
|
"echo '####### Restarting Docker Engine...'",
|
2023-08-23 08:14:39 +00:00
|
|
|
"systemctl restart docker",
|
2023-09-09 13:30:46 +00:00
|
|
|
"echo '####### Creating default Docker network (coolify)...'",
|
2023-09-08 16:40:25 +00:00
|
|
|
"docker network create --attachable coolify >/dev/null 2>&1 || true",
|
2023-09-09 13:30:46 +00:00
|
|
|
"echo '####### Done!'"
|
2023-09-18 09:21:10 +00:00
|
|
|
];
|
|
|
|
}
|
|
|
|
return remote_process($command, $server);
|
2023-05-04 07:11:11 +00:00
|
|
|
}
|
|
|
|
}
|