带有Docker的Ne​​xtcloud:无法创建或写入数据目录

时间:2018-07-05 09:53:17

标签: docker permissions docker-compose containers nextcloud

我使用Docker和Docker Compose成功安装了Nextcloud 13.0。

这是Nextcloud的Docker映像的GitHub存储库: https://github.com/nextcloud/docker

默认情况下,我的Nextcloud安装会将数据存储到以下路径:

/var/lib/docker/volumes/nextcloud_nextcloud/_data/data/user/files

我的/var文件夹位于一个小的分区上,而/home文件夹具有大约2Tb的存储空间。我正在尝试将Nextcloud设置为将上传的文件存储到主机上的/home/iamdocker/nextcloud/data上,但是不起作用。

Nextcloud配置页面显示以下消息:

  

错误

     

无法创建或写入数据目录   / home / iamdocker / nextcloud / data /

我的Nextcloud安装(在Docker容器中运行)没有写权限。

.env

MYSQL_ROOT_PASSWORD=***********************
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MYSQL_PASSWORD=************************************
MYSQL_HOST=db

NEXTCLOUD_VERSION=13.0
NEXTCLOUD_ADMIN_USER=example
NEXTCLOUD_ADMIN_PASSWORD=********************************
NEXTCLOUD_TABLE_PREFIX=nc_
NEXTCLOUD_DATA_DIR=/home/iamdocker/nextcloud/data/

docker-compose.yml

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb
    env_file:
      - .env
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}

  app:
    image: nextcloud:${NEXTCLOUD_VERSION}
    env_file:
      - .env
    ports:
      - 8081:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
      - ./data:/var/www/html/data
    environment:
      - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
      - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
      - NEXTCLOUD_TABLE_PREFIX=${NEXTCLOUD_TABLE_PREFIX}
      - NEXTCLOUD_DATA_DIR=${NEXTCLOUD_DATA_DIR}
    restart: always

谢谢。

1 个答案:

答案 0 :(得分:2)

我弄清楚了问题所在:NEXTCLOUD_DATA_DIR中的错误路径。

环境变量NEXTCLOUD_DATA_DIR使用容器中Nextcloud数据目录的路径,而不是主机上已安装卷的路径。

解决方案:我在/home/iamdocker/nextcloud/data/文件中将/var/www/html/data替换为.env

.env

MYSQL_ROOT_PASSWORD=***********************
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MYSQL_PASSWORD=************************************
MYSQL_HOST=db

NEXTCLOUD_VERSION=13.0
NEXTCLOUD_ADMIN_USER=example
NEXTCLOUD_ADMIN_PASSWORD=********************************
NEXTCLOUD_TABLE_PREFIX=nc_
NEXTCLOUD_DATA_DIR=/var/www/html/data