Невозможно загрузить данные в контейнер mariadb с тома докера - PullRequest
0 голосов
/ 13 февраля 2019

Я использую mariadb в качестве док-контейнера mysql, и у меня возникают проблемы с загрузкой данных из тома докера.

Мой докер-файл базы данных похож на тот, который размещен по этой ссылке.https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html/getting_started_with_containers/install_and_deploy_a_mariadb_container

Вместо того, чтобы импортировать данные, как показано в примере в приведенной выше ссылке, я хотел бы импортировать их из тома докера.

Я попытался использовать точку входа в докер.Пример sh, где я перебираю файлы в docker-entrypoint-initdb.d, но это вызывает ошибку myssql.sock, вероятно, потому что база данных уже отключена из-за команды RUN dockerfile.

database:
  build:
    context: ./database
  ports:
    - "3306:3306"
  volumes:
    - ./data/data.sql:/docker-entrypoint-initdb.d/data.sql
  environment:
    - MYSQL_DATABASE=hell
    - MYSQL_USER=test
    - MYSQL_PASSWORD=secret
    - MYSQL_ROOT_PASSWORD=secret

1 Ответ

0 голосов
/ 13 февраля 2019

Я думаю, что ваша проблема заключается в следующем:

Вы хотите получить объем монтирования через схему, но не видите в базе данных, верно?

Прежде всего, если вашНамерение состоит в том, чтобы использовать mariadb, вы можете использовать Официальный образ докера MariaDB.

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

Во-вторых, вы копируете этот SQL, но вы не запускаете MySQL импорта или дамп или что-то в этом роде.Итак, что вы можете сделать, это вставить в ваш docker-compose команду (например):


database:
  build:
    context: ./database
  ports:
    - "3306:3306"
  volumes:
    - ./data/data.sql:/docker-entrypoint-initdb.d/data.sql
  environment:
    - MYSQL_DATABASE=hell
    - MYSQL_USER=test
    - MYSQL_PASSWORD=secret
    - MYSQL_ROOT_PASSWORD=secret
  command: "mysql -u username -p database_name < file.sql"

Но это не лучший способ.

С другой стороны, вы можете следить за документацией MariaDB, устанавливать том для монтирования и при первом запуске импортировать данные.И с объемом вам не нужно снова запускать импорт.Это монтирование, которое вы должны поместить:

 /my/own/datadir:/var/lib/mysql

Очевидно, что вы можете смонтировать файл sql в папку / tmp /, и это все, и с помощью docker exec выполните sh и запустите его изнутри.

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