2017-01-30 251 views
0

我有一個mysql碼頭容器,它已啓動並正在運行。我可以進入它並看到mysql提示符。我不想在它上面安裝外部存儲器。每次我啓動這個容器時,我想從我的文件系統執行一個test.sql腳本來創建數據庫並執行一些這樣的操作。當我運行當前工作目錄中存在的腳本時,它會投訴。我知道這是微不足道的,但我無法解決這個問題。執行mysql腳本碼頭

/微服務/ mysqlcontainer]搬運工EXEC 3a21e5e3669d/bin/sh的-c '的MySQL -u根-ppwd < ./test.sql' /bin/sh的:./test.sql:沒有這樣的文件或目錄

+0

是在圖像/容器內的test.sql? 'docker exec 3a21e5e3669d ls -l test.sql' – BMitch

+0

不,它是外部的,我也猜測它可能是問題,但一些論壇建議這種語法作爲工作。我已經能夠連接到這個容器,並獲得mysql提示很容易,雖然這樣的 碼頭exec -it mysqltest mysql -u root -ppwd – curiousengineer

回答

3

由於您的腳本位於容器之外,因此不需要捕獲shell輸入重定向。您應該能夠運行以下內容:

docker exec -i 3a21e5e3669d mysql -u root -ppwd <./test.sql 
+0

謝謝,我明白了重定向,管道,標準輸出等linux的概念。你再詳細闡述一下「不需要......」。你的建議確實有效。 – curiousengineer

+1

'/ bin/sh -c'mysql .... BMitch

+0

謝謝!一直在嘗試使用spring boot + netflix庫對我的微服務進行docker-iize原型設計。這有助於。我需要sql容器來保存json Web令牌的身份驗證信息。我現在可以繼續前進,因爲我的身份驗證服務可以與數據庫交談,並且每次啓動mysql容器時,都會使用該腳本創建數據庫。我可能會自己閱讀如何掛載外部文件系統,但這對我來說不是優先事項 – curiousengineer