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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -192,7 +192,24 @@ class DockerActionManager
|
|||
$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,6 +220,9 @@ 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) {
|
||||
$volumeEntry = $volumeEntry . ':' . 'rw';
|
||||
|
|
|
@ -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