2023-05-04 07:11:11 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Actions\Server;
|
|
|
|
|
|
|
|
use App\Models\Server;
|
2023-06-23 07:58:15 +00:00
|
|
|
use App\Models\StandaloneDocker;
|
|
|
|
use App\Models\Team;
|
2023-05-04 07:11:11 +00:00
|
|
|
|
|
|
|
class InstallDocker
|
|
|
|
{
|
2023-06-23 07:58:15 +00:00
|
|
|
public function __invoke(Server $server, Team $team)
|
2023-05-04 07:11:11 +00:00
|
|
|
{
|
2023-06-15 11:28:16 +00:00
|
|
|
$dockerVersion = '23.0';
|
2023-05-04 07:11:11 +00:00
|
|
|
$config = base64_encode('{ "live-restore": true }');
|
2023-05-24 13:25:08 +00:00
|
|
|
$activity = remote_process([
|
2023-06-15 11:28:16 +00:00
|
|
|
"echo ####### Installing Prerequisites...",
|
|
|
|
"command -v jq >/dev/null || apt-get update",
|
|
|
|
"command -v jq >/dev/null || apt install -y jq",
|
|
|
|
"echo ####### Installing/updating Docker Engine...",
|
|
|
|
"curl https://releases.rancher.com/install-docker/{$dockerVersion}.sh | sh",
|
|
|
|
"echo ####### Configuring Docker Engine (merging existing configuration with the required)...",
|
|
|
|
"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...",
|
|
|
|
"systemctl restart docker",
|
2023-06-23 07:58:15 +00:00
|
|
|
"echo ####### Creating default network...",
|
|
|
|
"docker network create --attachable coolify",
|
2023-06-15 11:28:16 +00:00
|
|
|
"echo ####### Done!"
|
2023-05-25 13:48:26 +00:00
|
|
|
], $server);
|
2023-06-23 07:58:15 +00:00
|
|
|
StandaloneDocker::create([
|
|
|
|
'name' => 'coolify',
|
|
|
|
'network' => 'coolify',
|
|
|
|
'server_id' => $server->id,
|
|
|
|
'team_id' => $team->id
|
|
|
|
]);
|
2023-05-04 07:11:11 +00:00
|
|
|
|
|
|
|
return $activity;
|
|
|
|
}
|
|
|
|
}
|