使用mariaDB将一个sql转储文件安装到一个docker容器中

我只是在学习Docker的基础知识,但是从本地系统导入SQl文件就陷入困境。 我在Windows 10上,并允许我的docker容器访问我的共享驱动器。 我有一个位于D上的SQL文件,我想导入到我从docker中心获得的Maria DB的基础映像。

我find了一个命令来安装这个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:驱动器,因为似乎有一些未知的问题,我不能debugging使D:驱动器工作。

然后我find了inspect命令来查看哪些卷被安装到一个容器。 我有以下,但我不能导入到SQL,因为它说文件不存在,但它清楚地表明,在docker,它是在那里和装载,SQL文件是在map_me文件夹。 我在C的主目录下创build了一个名为map_me的文件夹:

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

我build议如下:

在创build容器时将你的sql_dump_file.sql安装在/docker-entrypoint-initdb.d/ 。 官方的MariaDB映像将在启动时恢复它。

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

所以经过一些调整和更好的理解后,我经过testing才得出结论,docker构成是要走的路。 所以第一个文件夹包含一个my.cnf文件来完成configuration,然后@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