Как подключить тома, работающие в Docker для Owncloud, к папкам виртуальной машины на хосте?

Вопрос или проблема

Я пытаюсь настроить Owncloud в Docker. Файл docker-compose yaml, который я использую, выглядит так:

services:
  owncloud:
    image: owncloud/server:10.15
    container_name: owncloud_server
    restart: always
    ports:
      - "8084:8080"
    depends_on:
      - mariadb
      - redis
    environment:
      - OWNCLOUD_DOMAIN=https://owncloud.example.com
      - OWNCLOUD_TRUSTED_DOMAINS=owncloud.example.com
      - OWNCLOUD_DB_TYPE=mysql
      - OWNCLOUD_DB_NAME=owncloud
      - OWNCLOUD_DB_USERNAME=owncloud
      - OWNCLOUD_DB_PASSWORD=owncloud
      - OWNCLOUD_DB_HOST=mariadb
      - OWNCLOUD_ADMIN_USERNAME=admin
      - OWNCLOUD_ADMIN_PASSWORD=admin
      - OWNCLOUD_MYSQL_UTF8MB4=true
      - OWNCLOUD_REDIS_ENABLED=true
      - OWNCLOUD_REDIS_HOST=redis
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - /home/ubuntu/oci-owncloud-config:/var/www/config
      - /home/ubuntu/oci-owncloud-data:/mnt/data

  mariadb:
    image: mariadb:10.11
    container_name: owncloud_mariadb
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=owncloud
      - MYSQL_USER=owncloud
      - MYSQL_PASSWORD=owncloud
      - MYSQL_DATABASE=owncloud
      - MARIADB_AUTO_UPGRADE=1
    command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"]
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=owncloud"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - /home/ubuntu/oci-owncloud-db:/var/lib/mysql

  redis:
    image: redis:6
    container_name: owncloud_redis
    restart: always
    command: ["--databases", "1"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - /home/ubuntu/oci-owncloud-redis:/data

Когда я запускаю это, я получаю три контейнера (redis, mariadb и owncloud). Папки в хостовой виртуальной машине подключены к моему OCI Object Storage с помощью s3fs. Проблема заключается в папках пользователей и разрешениях. Какие пользователи и разрешения я должен использовать с Owncloud, чтобы подключить их к папкам хостовой виртуальной машины?

Я пробовал:

sudo chown -R root:root /home/ubuntu/oci-owncloud-(name)
sudo chmod -R 755 /home/ubuntu/oci-owncloud-(name)

но это не сработало.

Ответ или решение

Подключение томов Docker для Owncloud к файловым папкам хоста

Введение

Настройка Owncloud в контейнерах Docker — это отличный способ управления файлами и удобного доступа к ним. Однако, как показывает ваш опыт, связка с папками хоста может вызвать некоторые проблемы с пользователями и разрешениями. В данном руководстве мы рассмотрим, как правильно настроить разрешения и пользователей для обеспечения успешного соединения.

Шаг 1: Понимание структуры пользователей и групп

Docker работает как демон, который создает контейнеры от имени определенного пользователя на хосте. По умолчанию это пользователь root, но в большинстве случаев это не является хорошей практикой из-за проблем с безопасностью и разрешениями.

Проблема с разрешениями возникает, когда контейнер пытается получить доступ к ресурсам, которые имеют другие владельцы или группы. Важно настроить владельцев и разрешения на хосте так, чтобы с ними могли работать ваши контейнеры.

Шаг 2: Настройка прав доступа к папкам

Для корректного доступа Owncloud к папкам, связанным с объектным хранилищем, необходимо следующее:

  1. Создайте пользователя для Owncloud и его группу на хосте:

    sudo adduser owncloud
  2. Присвойте необходимые разрешения для папок. Важно, чтобы эти папки принадлежали пользователю, под которым работает контейнер Owncloud. Например, если ваш контейнер работает от пользователя с UID 1000, вам нужно выполнить следующие команды:

    sudo chown -R 1000:1000 /home/ubuntu/oci-owncloud-config
    sudo chown -R 1000:1000 /home/ubuntu/oci-owncloud-data
    sudo chown -R 1000:1000 /home/ubuntu/oci-owncloud-db
    sudo chown -R 1000:1000 /home/ubuntu/oci-owncloud-redis

    Примечание: Замените 1000:1000 на реальные UID и GID вашего пользователя owncloud, если он отличается.

  3. Настройте права доступа к папкам. Для Owncloud важно, чтобы он мог читать и записывать файлы. Настройка 755 может не быть достаточной:

    sudo chmod -R 770 /home/ubuntu/oci-owncloud-*

    Это предоставит необходимый доступ как для владельца, так и для группы.

Шаг 3: Перезапуск сервиса

После изменения прав и владельцев необходимо перезапустить контейнеры Docker:

docker-compose down
docker-compose up -d

Шаг 4: Тестирование конфигурации

После перезапуска сервисов стоит протестировать, можете ли вы получить доступ к Owncloud и сохранять файлы. Узнайте, не появляются ли сообщения об ошибках, связанных с разрешениями в логах контейнеров:

docker logs owncloud_server

Заключение

Настройка правильных пользователей и разрешений для контейнеров Docker — это критически важный шаг для успешного развертывания Owncloud. Следуя описанным выше шагам, вы сможете корректно связать ваши локальные папки с контейнерами и избежать проблем с доступом к данным. В случае возникновения дополнительных вопросов всегда полезно обратиться к документации Docker и Owncloud, чтобы оставаться на шаг впереди в настройке и администрировании.

Оцените материал
Добавить комментарий

Капча загружается...