проблема с компоновкой докеров: разрешение отклонено при попытке создать/смонтировать том

У меня есть следующий файл docker-compose.yml:

version: "3"
services:
  dbs-poa-loc001d:
    image: percona
    volumes:
      - ./mysql_backup:/var/lib/mysql
      - ./create_databases:/docker-entrypoint-initdb.d
    hostname: "dbs-poa-loc001d"
    container_name: dbs-poa-loc001d
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    ports:
      - "3306:3306"
    networks:
      - azion-network
...

Когда я пытаюсь создать службу dbs-poa-loc001d (базу данных для проекта), я получаю следующую ошибку:

Starting dbs-poa-loc001d ... done
Attaching to dbs-poa-loc001d
dbs-poa-loc001d    | Initializing database
dbs-poa-loc001d    | mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
dbs-poa-loc001d    | 2019-01-11T01:17:52.060984Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
dbs-poa-loc001d    | 2019-01-11T01:17:52.062286Z 0 [ERROR] --initialize specified but the data directory exists and is not writable. Aborting.
dbs-poa-loc001d    | 2019-01-11T01:17:52.062299Z 0 [ERROR] Aborting
dbs-poa-loc001d    | 
dbs-poa-loc001d exited with code 1

Эта ошибка не возникает на моем компьютере с MacOS на работе, но на моем домашнем компьютере (под управлением Ubuntu 16.04) она возникает. Я заметил, что папка mysql_backup на хосте, созданная для хранения данных тома, настроена на группу И пользователя root. Может ли кто-нибудь сказать мне, что происходит, и как мне это исправить? Уже пробовал безуспешно:

  • Запуск команд docker-compose с использованием sudo
  • Вручную сменить владельца и пользователя папки на моего фактического пользователя (с низким уровнем привилегий).

Мои текущие настройки и установленные версии:

  • Убунту 16.04
  • Докер версии 18.09.0, сборка 4d60db4
  • docker-compose версии 1.23.2, сборка 1110ad0
  • docker-compose был установлен с использованием sudo pip install docker-compose

person Vini.g.fer    schedule 11.01.2019    source источник


Ответы (1)


Можете ли вы попробовать установить разрешения mysql_backup на 1001:0?
что-то вроде sudo chown -R 1001:0 ./mysql_backup
или в качестве альтернативы, но только если папка пуста sudo chmod 777 ./mysql_backup

в отношении percona Dockerfile идентификатор пользователя mysql равен 1001 https://github.com/percona/percona-docker/blob/master/percona-server.80/Dockerfile

person vvchik    schedule 11.01.2019
comment
Смена владельца на 1001:0 не помогла. Добавление разрешения 777 сделало. Тем не менее очень странно, что я должен был добавить это. Кто-нибудь знает лучшее решение? - person Vini.g.fer; 11.01.2019
comment
когда вы сможете запустить percona с разрешениями 777, попробуйте запустить lsof ./mysql_backup во время работы percona, чтобы увидеть, какой пользователь (или userId) имеет открытые файлы в этом каталоге. Это должен быть пользователь под этим запущенным перконом. После этого вы, вероятно, сможете правильно установить владельца и вернуть права доступа в нормальное состояние. - person vvchik; 21.01.2019