allow to add container to host network

Signed-off-by: Simon L <szaimen@e.mail.de>
This commit is contained in:
Simon L 2022-12-25 03:10:20 +01:00
parent 117c3de7c5
commit cea32f50af

View file

@ -124,8 +124,9 @@ class DockerActionManager
}
$containerName = $container->GetIdentifier();
if ($container->GetInternalPort() !== "") {
$connection = @fsockopen($containerName, (int)$container->GetInternalPort(), $errno, $errstr, 0.1);
$internalPort = $container->GetInternalPort();
if ($internalPort !== "" && $internalPort !== 'host') {
$connection = @fsockopen($containerName, (int)$internalPort, $errno, $errstr, 0.1);
if ($connection) {
fclose($connection);
return new RunningState();
@ -216,9 +217,11 @@ class DockerActionManager
}
$exposedPorts = [];
if ($container->GetInternalPort() !== 'host') {
foreach($container->GetPorts()->GetPorts() as $port) {
$exposedPorts[$port] = null;
}
}
$requestBody = [
'Image' => $this->BuildImageName($container),
@ -566,7 +569,6 @@ class DockerActionManager
true
);
// get the id from the response
$id = $response['Id'];
// start the exec
@ -606,8 +608,12 @@ class DockerActionManager
}
}
private function ConnectContainerIdToNetwork(string $id) : void
private function ConnectContainerIdToNetwork(string $id, string $internalPort) : void
{
if ($internalPort === 'host') {
$network = 'host';
} else {
$network = 'nextcloud-aio';
$url = $this->BuildApiUrl('networks/create');
try {
$this->guzzleClient->request(
@ -631,9 +637,10 @@ class DockerActionManager
throw $e;
}
}
}
$url = $this->BuildApiUrl(
sprintf('networks/%s/connect', 'nextcloud-aio')
sprintf('networks/%s/connect', $network)
);
try {
$this->guzzleClient->request(
@ -655,12 +662,12 @@ class DockerActionManager
public function ConnectMasterContainerToNetwork() : void
{
$this->ConnectContainerIdToNetwork('nextcloud-aio-mastercontainer');
$this->ConnectContainerIdToNetwork('nextcloud-aio-mastercontainer', '');
}
public function ConnectContainerToNetwork(Container $container) : void
{
$this->ConnectContainerIdToNetwork($container->GetIdentifier());
$this->ConnectContainerIdToNetwork($container->GetIdentifier(), $container->GetInternalPort());
}
public function StopContainer(Container $container) : void {