使用mariaDB

时间:2016-12-02 06:05:41

标签: mysql docker mariadb

我刚刚学习了docker的基础知识,但是从本地系统导入SQl文件时却停滞不前。我在Windows 10上,并允许我的docker容器访问我的共享驱动器。我有一个位于D上的SQL文件我想导入到我从docker hub获得的Maria DB的基本映像。

我找到了一个命令,用于在我的映像上安装该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

2016年5月12日更新

所以在一个令人失望的周末玩游戏之后。我目前将驱动器更改为C:驱动器,因为似乎有一些未知的问题我无法通过让D:驱动器工作来调试。

然后我找到了inspect命令来查看装入容器的卷。我有以下,但我不能导入到SQL,因为它说文件不存在,但它明确地说在docker中它存在并挂载,SQL文件在map_me文件夹中。我在C:

的主目录中创建了一个名为map_me的文件夹
docker inspect dbcontainer

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

2 个答案:

答案 0 :(得分:3)

我建议如下:

创建容器时,将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>

答案 1 :(得分:3)

经过一些调整和更好的理解后,我在测试后得出结论,即docker-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