2014-07-10 118 views
6

使用這個tutum-docker-mysql dockerfile來啓動並運行一個dockerfile,並在其中安裝了mysql的docker image,docker文件創建一個名爲root並且沒有密碼的用戶,我需要的是添加像這樣的dockerfile:使用dockerfile在mysql中創建一個默認數據庫

RUN mysql -uroot -p"" && mysql create database test; 

所以,當我建立從泊塢窗文件的圖像,數據庫應該已經在那裏了。

+0

當您嘗試這會發生什麼 實例? – Behe

+0

我嘗試了幾個命令,並得到diff錯誤,我試圖mysql -uroot「創建數據庫測試」,錯誤是:錯誤2002(HY000):無法通過套接字'/ var/run/mysqld連接到本地MySQL服務器/mysqld.sock'(2) – Mohammad

+0

還試過mysqld -uroot -p「」「創建數據庫測試」,錯誤是:140710 10:12:28 [警告]使用唯一選項前綴key_buffer而不是key_buffer_size已被棄用,並且將在未來的版本中被刪除。請改用全名。 – Mohammad

回答

11

通過執行以下操作,我能夠完成向tutum-docker-mysql映像添加數據庫的目標。

git clone https://github.com/tutumcloud/tutum-docker-mysql.git 
cd tutum-docker-mysql 
vi create_mysql_admin_user.sh 

在.sh文件裏面我在兩個已經存在的「mysql -uroot」行的下面添加了一行。我簡單地補充說:

mysql -uroot -e "create database test;" 

之後,更改爲該.sh文件,我簡單地構建了泊塢窗圖像。

docker run -d -p 3307:3306 tutum/mysql 

一旦容器運行,你需要知道使用密碼和容器的IP地址:

docker build -t tutum/mysql . 

泊塢窗圖像建成後,我可以像運行。要獲取密碼,你只需做

docker logs 2976a81f1a9b19787d9bde893c831b7e6586d7c8391ccd222ad29b02c282d896 

但當然使用容器ID,這是從上面的「docker run」命令返回的。現在你有密碼,你需要IP地址。我通過這樣做了。

docker inspect 2976a81f1a9b19787d9bde893c831b7e6586d7c8391ccd222ad29b02c282d896 

然後看着「網關」地址。有了密碼和IP地址,我就可以從容器的OUTSIDE中執行這個mysql命令。

mysql -uadmin -pJcM5FCphMOp4 -h172.17.42.1 -P3307 

其中ip地址和密碼是我從前兩個docker命令獲得的值。在該命令運行後,我可以發出一個「show databases」命令並顯示以下結果。

mysql> show databases; 
+--------------------+ 
| Database   | 
+--------------------+ 
| information_schema | 
| mysql    | 
| performance_schema | 
| test    | 
+--------------------+ 
4 rows in set (0.00 sec) 

mysql> 

我花了一段時間嘗試修改Dockerfile。我認爲這可能是可能的,但過了一段時間,我發現上述解決方案更快更簡單。

3

您可以在容器啓動時傳遞ON_CREATE_DB env參數。從tutum README.md

docker run -d -p 3306:3306 -e ON_CREATE_DB="newdatabase" tutum/mysql