2016-12-02 2 views
1

Я просто изучаю основы докера, но застрял на импортировании файла SQl из локальной системы. Я нахожусь в окнах 10 и разрешаю своим контейнерам докеров получать доступ к моим общим дискам. У меня есть файл SQL, расположенный на D, который я хотел бы импортировать в базовое изображение Maria DB, которое я получил из докер-хаба.Установите файл дампа sql в контейнер докера с помощью mariaDB

Я нашел команду для установки этого файла sql на моем изображении и попытался напрямую импортировать изображение из командной строки контейнера sql, но получить сообщение об ошибке не удалось.

Ниже приведены два метода, которые я пробовал, но где я могу хранить мой sql-дамп и как его импортировать?

Метод 1 пытался через командную строку MySQL

winpty docker run -it --link *some-mariadb*:mysql --rm mariadb sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' 

Затем

use *database-created* // previously created 

Затем

source d:/sql_dump_file.sql 

Способ 2

docker exec -i my-new-database mysql -uroot -pnew-db-password --force < d:/sql_dump_file.sql 

Обновление 5/12/2016

Так после разочаровывающих выходные игры вокруг. В настоящее время я изменяю диск на диск C: как будто, похоже, есть некоторая неизвестная проблема, я не могу отлаживать работу с приводом D:.

Затем я нашел команду инспекции, чтобы узнать, какие объемы установлены в контейнере. У меня есть следующее, но я не могу импортировать в SQL, поскольку он говорит, что файл не существует, но он ясно говорит в докере, что он там и установлен, файл SQL находится внутри папки map_me. Я создал папку под названием map_me в главном каталоге C:

docker inspect dbcontainer 

     "Mounts": 
      [ 
      { 
       "Source": "/map_me", 
       "Destination": "/docker-entrypoint-initdb.d/sl_dump_fil‌​e.sql", 
       "Mode": "", 
       "RW": true, 
       "Propagation": "rprivate" 
      } 
      ] 

ответ

1

Таким образом, после некоторой настройки и лучшего понимания, я пришел к выводу, после тестирования, что Докер-Compose является путем. Таким образом, первая папка содержит файл my.cnf, который выполняет конфигурацию, а затем другую папку, которую идентифицировал @Farhad, используется для интилизации файла .sql.

version: "2" 

services: 

    mariadb_a: 
     image: mariadb:latest 
     ports: 
     - "3306:3306" 
     environment: 
     - MYSQL_ROOT_PASSWORD=111111 
     volumes: 
     - c:/some_folder:/etc/mysql/conf.d 
     - c:/some_other_folder:/docker-entrypoint-initdb.d 
2

я рекомендую следующее:

гору ваш sql_dump_file.sql на /docker-entrypoint-initdb.d/ при создании контейнера. Официальное изображение MariaDB восстановит его при запуске.

docker run -d --name <containername> -v d:/sql_dump_file.sql:/docker-entrypoint-initdb.d/sl_dump_file.sql <environment_variables> <imagename> <startup commands> 
+0

он создал файл изображения, но когда я зашел в sql, он просто имеет таблицы mysql по умолчанию. – Paddy

+0

попробуйте следующее: 'docker run -d --name <имя_пользователя> -vd: \ sql_dump_file.sql: /docker-entrypoint-initdb.d/sl_dump_file.sql <команды запуска>' –

+0

То же самое, создает базу данных со стандартным конфигурацией MySQL, но моего SQL-дампа нет. – Paddy

Смежные вопросы