создание тома докера - установка разрешений - PullRequest
0 голосов
/ 15 мая 2019

Я запускаю это на Debian 9

Я использую sudo docker volume create db для создания тома, который использую в моем docker-compose.yml. Но я все еще получаю ошибку db_1_d89b59353579 | mkdir: cannot create directory '/var/lib/mysql': Permission denied.

Как я могу установить разрешения для пользователя, использующего этот том. А как получить пользователя?

Докер-Compose:

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - db:/var/lib/mysql:z
    environment:
      - MYSQL_ROOT_PASSWORD=***
      - MYSQL_PASSWORD=***
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    restart: always

Я получил файл install.sh, в котором я запускаю:

...
sudo docker volume create db

sudo docker-compose build
docker-compose up -d

1 Ответ

3 голосов
/ 15 мая 2019

Попробуйте сначала сменить монтирование на локальные папки и посмотреть, решит ли это вашу проблему:

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
...
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=***
      - MYSQL_PASSWORD=***
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
...
    volumes:
      - ./nextcloud:/var/www/html
    restart: always

Если это так, проверьте правильность удаления томов с помощью docker-compose down. Запустите docker volume ls. Если они все еще сохраняются, удалите их вручную и перезапустите контейнеры с томами.

Относительно разницы между подключением к тому (db: / var / lib / mysql) и подключением к пути к хосту (./db:/var/lib/mysql):

В первом случае это том , управляемый Docker . Он предназначен для настойчивости, но добраться до файлов немного сложнее. Во втором случае это путь на хосте , который значительно упрощает получение сохраненных файлов. Я рекомендую запустить «docker-compose config» для обеих ситуаций и увидеть разницу в том, как docker-compose внутренне преобразует оператор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...