2016-12-02 29 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