2016-12-02 28 views
1

我刚学泊坞窗的基础上安装一个SQL转储文件到一个码头工人的容器,不过既然来了就坚持从本地系统导入SQL文件。我在Windows 10上,并允许我的码头容器访问我的共享驱动器。我有一个SQL文件位于D我想导入到我从码头中心获得的Maria DB的基本映像。与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 

更新2016年5月12日

的玩弄一个令人失望的周末后,所以。我目前将驱动器更改为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

所以经过一些调整和更好的理解后,我在测试后得出结论,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 
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表。再次/docker-entrypoint-initdb.d/sl_dump_file.sql <启动命令>' – Paddy

+0

试试这个:'搬运工运行-d --name <容器名称> -vd:\ sql_dump_file.sql用标准的MySQL配置创建一个数据库,但我的SQL转储不在那里。 –

+0

同样的事情,: – Paddy