mirror of
https://github.com/nextcloud/all-in-one.git
synced 2024-09-21 07:16:09 +08:00
fix host mounts for windows
Signed-off-by: szaimen <szaimen@e.mail.de>
This commit is contained in:
parent
b4a8322a1a
commit
3c6cb85c74
|
@ -512,4 +512,24 @@ class ConfigurationManager
|
|||
$config['timezone'] = '';
|
||||
$this->WriteConfig($config);
|
||||
}
|
||||
|
||||
public function isWindowsPath(string $path) : bool {
|
||||
$windowsPath = '/host_mnt/';
|
||||
if (str_starts_with($path, $windowsPath)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function GetWindowsVolumeName(string $volumeName) : string {
|
||||
$name = '';
|
||||
if ($volumeName === $this->GetNextcloudDatadirMount()) {
|
||||
$name = 'nextcloud_aio_nextcloud_data';
|
||||
} elseif ($volumeName === $this->GetNextcloudMount()) {
|
||||
$name = 'nextcloud_aio_nextcloud_mount';
|
||||
} elseif ($volumeName === $this->GetBorgBackupHostLocation()) {
|
||||
$name = 'nextcloud_aio_backup';
|
||||
}
|
||||
return $name;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -186,13 +186,30 @@ class DockerActionManager
|
|||
];
|
||||
|
||||
$firstChar = substr($volume->name, 0, 1);
|
||||
if(!in_array($firstChar, $forbiddenChars)) {
|
||||
if (!in_array($firstChar, $forbiddenChars)) {
|
||||
$this->guzzleClient->request(
|
||||
'POST',
|
||||
$url,
|
||||
[
|
||||
'json' => [
|
||||
'name' => $volume->name,
|
||||
'Name' => $volume->name,
|
||||
],
|
||||
]
|
||||
);
|
||||
} elseif ($this->configurationManager->isWindowsPath($volume->name)) {
|
||||
$name = $this->configurationManager->GetWindowsVolumeName($volume->name);
|
||||
$this->guzzleClient->request(
|
||||
'POST',
|
||||
$url,
|
||||
[
|
||||
'json' => [
|
||||
'Name' => $name,
|
||||
'Driver' => 'local',
|
||||
'DriverOpts' => [
|
||||
'type' => 'none',
|
||||
'device' => $volume->name,
|
||||
'o' => 'bind',
|
||||
]
|
||||
],
|
||||
]
|
||||
);
|
||||
|
@ -203,8 +220,11 @@ class DockerActionManager
|
|||
public function CreateContainer(Container $container) : void {
|
||||
$volumes = [];
|
||||
foreach($container->GetVolumes()->GetVolumes() as $volume) {
|
||||
if ($this->configurationManager->isWindowsPath($volume->name)) {
|
||||
$volume->name = $this->configurationManager->GetWindowsVolumeName($volume->name);
|
||||
}
|
||||
$volumeEntry = $volume->name . ':' . $volume->mountPoint;
|
||||
if($volume->isWritable) {
|
||||
if ($volume->isWritable) {
|
||||
$volumeEntry = $volumeEntry . ':' . 'rw';
|
||||
} else {
|
||||
$volumeEntry = $volumeEntry . ':' . 'ro';
|
||||
|
|
|
@ -94,8 +94,6 @@ docker run -it ^
|
|||
nextcloud/all-in-one:latest
|
||||
```
|
||||
|
||||
**Please note:** AIO works on Windows in general but due to a bug in `Docker for Windows`, it currently does not support mounting directories from the host into AIO which means that `NEXTCLOUD_DATADIR`, `NEXTCLOUD_MOUNT` do not work and the built-in backup solution is not able to write to the host OS. See https://github.com/nextcloud/all-in-one/discussions/600.
|
||||
|
||||
</details>
|
||||
|
||||
### How to resolve firewall problems with Fedora Linux, RHEL OS, CentOS, SUSE Linux and others?
|
||||
|
|
Loading…
Reference in a new issue