使用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_file.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