MySQL в Docker разрешения подключенного каталога перепутаны на внешнем SSD - PullRequest
0 голосов
/ 06 мая 2020

Я запускаю MySQL внутри образа docker, и я подключаю каталог с хоста внутри контейнера, чтобы сохранить базу данных ./db:/var/lib/mysql.
Поскольку данные стали очень большими, у меня переместить все на внешний SSD. Теперь кажется, что разрешения смонтированного каталога испорчены. Когда я позволяю контейнеру MySQL инициализировать каталог ./db, все в порядке. Но если я остановлю контейнеры, удалю внешний SSD, подключу его обратно и снова раскручу контейнеры, контейнер MySQL продолжит перезапуск, регистрируя такие вещи, как:

chown: changing ownership of '/var/lib/mysql/._binlog.000004': Operation not permitted
  • Я работает docker на моей ма c.
  • ls -l: drwxrwxrwx@ 1 amir staff 131072 May 5 21:25 db.
  • docker -v: Docker version 19.03.8, build afacb8b.
  • docker-compose -v: docker-compose version 1.25.4, build 8d51620a
  • docker-compose.yml:

    version: "3"
    
    services:
      db:
        image: mysql
        volumes:
          - ./db:/var/lib/mysql
        restart: always
        ports:
          - "3306:3306"
        environment:
          MYSQL_ROOT_PASSWORD: password
        networks:
          - projectnetwork
    networks:
      projectnetwork:
    
    

Любые подсказки, как я могу решить эту проблему буду очень признателен :) Спасибо!

1 Ответ

0 голосов
/ 06 мая 2020

Хорошо, я не уверен, что это лучший способ решить эту проблему, но на данный момент я могу обойти эту проблему. Пожалуйста, дайте мне знать, если это совсем глупо и есть ли лучшие решения.

Я попытался запустить контейнер с самим docker и передать --user "$(id -u):$(id -g)", и это сработало.
К сожалению, мы не можем сделать sub bash команд в файле docker-compose, поэтому мне пришлось создать свой собственный сценарий, который устанавливает переменную среды и запускает docker -compose:

DOCKER_COMPOSE_USER=$(id -u):$(id -g) docker-compose up -d

И в docker-compose.yml:

user: ${DOCKER_COMPOSE_USER}

Вот и все!

...