无法在 Nextcloud Docker 容器中挂载配置目录

Cannot mount Config directory in Nextcloud Docker container

我正在尝试在本地创建自定义 Nextcloud 配置,然后能够使用此处定义的卷将其安装到适当的文件夹:https://github.com/nextcloud/docker#persistent-data。对于 config 挂载,所有卷挂载工作 除了 ......为什么在这里被区别对待?

重现步骤

0) 输入 new/emptry 目录(不包含子目录或附加文件)。

1) 创建一个仅包含以下内容的 docker-compose.yml 文件:

version: "3.4"

services:
  nextcloud:
    image: nextcloud:latest
    volumes:
      - "./nextcloud/custom_apps:/var/www/html/custom_apps"
      - "./nextcloud/config:/var/www/html/config"
      - "/data/nextcloud:/var/www/html/data"
      - "./themes:/var/www/html/themes"

2) docker-组合-d

预期行为

工作。我应该能够在 ./nextcloud/config 本地看到 /var/www/html/config 内容,然后插入一个客户 config.php,然后在容器中更新它。

实际行为

启动容器时出错,特定于 config 目录。如果我删除上面的 ./nextcloud/config:/var/www/html/config 卷挂载,那么容器将正常启动。

错误信息

ERROR: for nextcloud Cannot start service nextcloud: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \"/home/user/Nextcloud-test/nextcloud/config\" to rootfs \"/var/lib/docker/overlay2/41b567141e23b16cf5e4f99f4c33703fc9a533aa5a4bef68fbba70a74842ca88/merged\" at \"/var/lib/docker/overlay2/41b567141e23b16cf5e4f99f4c33703fc9a533aa5a4bef68fbba70a74842ca88/merged/var/www/html/config\" caused \"not a directory\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type ERROR: Encountered errors while bringing up the project.

服务器配置

操作系统:

操作系统:Debian GNU/Linux 10 (buster) 内核:Linux 4.19.0-8-cloud-amd64 架构:x86-64

图片

nextcloud:最新 (apache)

我无法使用您的步骤重现 (Ubuntu 18.04)。

从这里开始,运行 docker-compose up -d 然后 docker-compose logs,我没有发现任何错误。然后,当 运行 docker inspect 在容器上时,我看到以下内容:

...
"Volumes": {
    "/var/www/html": {},
    "/var/www/html/config": {},
    "/var/www/html/custom_apps": {},
    "/var/www/html/data": {},
    "/var/www/html/themes": {}
},
...

这表明挂载没有问题。

我建议你做什么:

  1. 检查目录./nextcloud/config是否存在且不是文件
  2. 检查您的 Docker 和 Docker Compose 安装是否是最新的
  3. 尝试 运行 带有 docker run -it -v ./nextcloud/config:/var/www/html/config <containername> /bin/bash 的 Docker 容器来探索挂载是否手动工作
  4. 尝试在最小示例(例如 Getting started 示例
  5. 上执行相同的操作