Вопрос или проблема
Я пытаюсь настроить 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 к папкам, связанным с объектным хранилищем, необходимо следующее:
-
Создайте пользователя для Owncloud и его группу на хосте:
sudo adduser owncloud
-
Присвойте необходимые разрешения для папок. Важно, чтобы эти папки принадлежали пользователю, под которым работает контейнер 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
, если он отличается. -
Настройте права доступа к папкам. Для 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, чтобы оставаться на шаг впереди в настройке и администрировании.