Док-контейнер Mysql не установлен - PullRequest
3 голосов
/ 08 июня 2019

Я создал контейнер MySQL для Docker, используя docker-compose. Я построил контейнер и создал несколько таблиц в MySQL. Но, когда я перезагрузил компьютер, я потерял свои данные (таблицы и данные) в MySQL. Я использую локальную папку в контейнере в качестве тома. Но я вижу, что он не смонтирован в виртуальном контейнере.

Моя ОС - Windows 10 Pro. Я попытался перезагрузить рабочий стол Docker и контейнеры, но это не помогло. Вот .yml, на котором я бегу:

version: '3.3'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: 'db_name'
      MYSQL_USER: 'db_user'
      MYSQL_PASSWORD: 'db_pass'
      MYSQL_ROOT_PASSWORD: 'db_root_pass'
    ports:
      - '3308:3306'
    volumes:
      - ./mysql-log:/var/log/mysql
      - ./dbdata:/var/lib/mysql
    command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']

1 Ответ

2 голосов
/ 08 июня 2019

Есть некоторые проблемы с правами доступа к образу докера MySQL.Таким образом, вместо использования MySQL, вы можете использовать MariaDB, у которого нет проблем с томами докера

В вашем docker-compose вы монтируете dbdata из текущего каталога, который не будет монтироваться из-занекоторые проблемы с разрешением томов докера с образом докера MySQL.Монтирование в общую папку не работает, поэтому вместо использования ./dbdata попробуйте использовать / dbdata

Даже я столкнулся с той же проблемой, и я изменил MySQL на MariaDB и подключил свои тома к / dbdata, и это сработалодля меня.Вот мой docker-compose.yml

version: '3'
services:
  mysql:
    image: mariadb
    container_name: mysql
    environment:
      MYSQL_DATABASE: 'movies'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'user'
      # You can use whatever password you like
      MYSQL_PASSWORD: '123'
      # Password for root access
      MYSQL_ROOT_PASSWORD: '1234'
    ports:
    # <Port exposed> : < MySQL Port running inside container>
      - '3306:3306'
    expose:
      # Opens port 3306 on the container
      - '3306'
    # Where our data will be persisted
    volumes:
      - /dbdata :/var/lib/mysql

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

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