feat: add static ipv4 ipv6 support
This commit is contained in:
parent
5e980c5fe0
commit
c7da43f50d
@ -78,25 +78,25 @@ private function check_resources($schedule)
|
|||||||
dispatch($job);
|
dispatch($job);
|
||||||
})->name('container-status-' . $server->id)->everyMinute()->onOneServer();
|
})->name('container-status-' . $server->id)->everyMinute()->onOneServer();
|
||||||
if ($server->isLogDrainEnabled()) {
|
if ($server->isLogDrainEnabled()) {
|
||||||
$schedule
|
|
||||||
->call(function () use ($server) {
|
|
||||||
$randomSeconds = rand(1, 40);
|
|
||||||
$job = new CheckLogDrainContainerJob($server);
|
|
||||||
$job->delay($randomSeconds);
|
|
||||||
dispatch($job);
|
|
||||||
})->name('log-drain-container-check-' . $server->id)->everyMinute()->onOneServer();
|
|
||||||
// $schedule->job(new CheckLogDrainContainerJob($server))->everyMinute()->onOneServer();
|
// $schedule->job(new CheckLogDrainContainerJob($server))->everyMinute()->onOneServer();
|
||||||
|
$schedule
|
||||||
|
->call(function () use ($server) {
|
||||||
|
$randomSeconds = rand(1, 40);
|
||||||
|
$job = new CheckLogDrainContainerJob($server);
|
||||||
|
$job->delay($randomSeconds);
|
||||||
|
dispatch($job);
|
||||||
|
})->name('log-drain-container-check-' . $server->id)->everyMinute()->onOneServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach ($servers as $server) {
|
foreach ($servers as $server) {
|
||||||
$schedule
|
|
||||||
->call(function () use ($server) {
|
|
||||||
$randomSeconds = rand(1, 40);
|
|
||||||
$job = new ServerStatusJob($server);
|
|
||||||
$job->delay($randomSeconds);
|
|
||||||
dispatch($job);
|
|
||||||
})->name('server-status-job-' . $server->id)->everyMinute()->onOneServer();
|
|
||||||
// $schedule->job(new ServerStatusJob($server))->everyMinute()->onOneServer();
|
// $schedule->job(new ServerStatusJob($server))->everyMinute()->onOneServer();
|
||||||
|
$schedule
|
||||||
|
->call(function () use ($server) {
|
||||||
|
$randomSeconds = rand(1, 40);
|
||||||
|
$job = new ServerStatusJob($server);
|
||||||
|
$job->delay($randomSeconds);
|
||||||
|
dispatch($job);
|
||||||
|
})->name('server-status-job-' . $server->id)->everyMinute()->onOneServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private function instance_auto_update($schedule)
|
private function instance_auto_update($schedule)
|
||||||
|
@ -1223,6 +1223,19 @@ private function generate_compose_file()
|
|||||||
if ((bool)$this->application->settings->is_consistent_container_name_enabled) {
|
if ((bool)$this->application->settings->is_consistent_container_name_enabled) {
|
||||||
$custom_compose = convert_docker_run_to_compose($this->application->custom_docker_run_options);
|
$custom_compose = convert_docker_run_to_compose($this->application->custom_docker_run_options);
|
||||||
if (count($custom_compose) > 0) {
|
if (count($custom_compose) > 0) {
|
||||||
|
$ipv4 = data_get($custom_compose, 'ip.0');
|
||||||
|
$ipv6 = data_get($custom_compose, 'ip6.0');
|
||||||
|
data_forget($custom_compose, 'ip');
|
||||||
|
data_forget($custom_compose, 'ip6');
|
||||||
|
if ($ipv4 || $ipv6) {
|
||||||
|
data_forget($docker_compose['services'][$this->application->uuid], 'networks');
|
||||||
|
}
|
||||||
|
if ($ipv4) {
|
||||||
|
$docker_compose['services'][$this->application->uuid]['networks'][$this->destination->network]['ipv4_address'] = $ipv4;
|
||||||
|
}
|
||||||
|
if ($ipv6) {
|
||||||
|
$docker_compose['services'][$this->application->uuid]['networks'][$this->destination->network]['ipv6_address'] = $ipv6;
|
||||||
|
}
|
||||||
$docker_compose['services'][$this->container_name] = array_merge_recursive($docker_compose['services'][$this->container_name], $custom_compose);
|
$docker_compose['services'][$this->container_name] = array_merge_recursive($docker_compose['services'][$this->container_name], $custom_compose);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1230,6 +1243,19 @@ private function generate_compose_file()
|
|||||||
data_forget($docker_compose, 'services.' . $this->container_name);
|
data_forget($docker_compose, 'services.' . $this->container_name);
|
||||||
$custom_compose = convert_docker_run_to_compose($this->application->custom_docker_run_options);
|
$custom_compose = convert_docker_run_to_compose($this->application->custom_docker_run_options);
|
||||||
if (count($custom_compose) > 0) {
|
if (count($custom_compose) > 0) {
|
||||||
|
$ipv4 = data_get($custom_compose, 'ip.0');
|
||||||
|
$ipv6 = data_get($custom_compose, 'ip6.0');
|
||||||
|
data_forget($custom_compose, 'ip');
|
||||||
|
data_forget($custom_compose, 'ip6');
|
||||||
|
if ($ipv4 || $ipv6) {
|
||||||
|
data_forget($docker_compose['services'][$this->application->uuid], 'networks');
|
||||||
|
}
|
||||||
|
if ($ipv4) {
|
||||||
|
$docker_compose['services'][$this->application->uuid]['networks'][$this->destination->network]['ipv4_address'] = $ipv4;
|
||||||
|
}
|
||||||
|
if ($ipv6) {
|
||||||
|
$docker_compose['services'][$this->application->uuid]['networks'][$this->destination->network]['ipv6_address'] = $ipv6;
|
||||||
|
}
|
||||||
$docker_compose['services'][$this->application->uuid] = array_merge_recursive($docker_compose['services'][$this->application->uuid], $custom_compose);
|
$docker_compose['services'][$this->application->uuid] = array_merge_recursive($docker_compose['services'][$this->application->uuid], $custom_compose);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,10 @@ public function uniqueId(): int
|
|||||||
|
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
|
if (!$this->server->isFunctional()) {
|
||||||
|
return 'Server is not ready.';
|
||||||
|
};
|
||||||
|
|
||||||
$applications = $this->server->applications();
|
$applications = $this->server->applications();
|
||||||
$skip_these_applications = collect([]);
|
$skip_these_applications = collect([]);
|
||||||
foreach ($applications as $application) {
|
foreach ($applications as $application) {
|
||||||
@ -57,10 +61,6 @@ public function handle()
|
|||||||
$applications = $applications->filter(function ($value, $key) use ($skip_these_applications) {
|
$applications = $applications->filter(function ($value, $key) use ($skip_these_applications) {
|
||||||
return !$skip_these_applications->pluck('id')->contains($value->id);
|
return !$skip_these_applications->pluck('id')->contains($value->id);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!$this->server->isFunctional()) {
|
|
||||||
return 'Server is not ready.';
|
|
||||||
};
|
|
||||||
try {
|
try {
|
||||||
if ($this->server->isSwarm()) {
|
if ($this->server->isSwarm()) {
|
||||||
$containers = instant_remote_process(["docker service inspect $(docker service ls -q) --format '{{json .}}'"], $this->server, false);
|
$containers = instant_remote_process(["docker service inspect $(docker service ls -q) --format '{{json .}}'"], $this->server, false);
|
||||||
|
@ -423,7 +423,7 @@ function convert_docker_run_to_compose(?string $custom_docker_run_options = null
|
|||||||
'--security-opt',
|
'--security-opt',
|
||||||
'--sysctl',
|
'--sysctl',
|
||||||
'--ulimit',
|
'--ulimit',
|
||||||
'--device'
|
'--device',
|
||||||
]);
|
]);
|
||||||
$mapping = collect([
|
$mapping = collect([
|
||||||
'--cap-add' => 'cap_add',
|
'--cap-add' => 'cap_add',
|
||||||
@ -435,6 +435,7 @@ function convert_docker_run_to_compose(?string $custom_docker_run_options = null
|
|||||||
'--init' => 'init',
|
'--init' => 'init',
|
||||||
'--ulimit' => 'ulimits',
|
'--ulimit' => 'ulimits',
|
||||||
'--privileged' => 'privileged',
|
'--privileged' => 'privileged',
|
||||||
|
'--ip' => 'ip',
|
||||||
]);
|
]);
|
||||||
foreach ($matches as $match) {
|
foreach ($matches as $match) {
|
||||||
$option = $match[1];
|
$option = $match[1];
|
||||||
|
@ -8,6 +8,15 @@
|
|||||||
])->ray();
|
])->ray();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('ConvertIp', function () {
|
||||||
|
$input = '--cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add SYS_ADMIN --ip 127.0.0.1 --ip 127.0.0.2';
|
||||||
|
$output = convert_docker_run_to_compose($input);
|
||||||
|
expect($output)->toBe([
|
||||||
|
'cap_add' => ['NET_ADMIN', 'NET_RAW', 'SYS_ADMIN'],
|
||||||
|
'ip' => ['127.0.0.1', '127.0.0.2']
|
||||||
|
])->ray();
|
||||||
|
});
|
||||||
|
|
||||||
test('ConvertPrivilegedAndInit', function () {
|
test('ConvertPrivilegedAndInit', function () {
|
||||||
$input = '---privileged --init';
|
$input = '---privileged --init';
|
||||||
$output = convert_docker_run_to_compose($input);
|
$output = convert_docker_run_to_compose($input);
|
||||||
|
Loading…
Reference in New Issue
Block a user