使用這個tutum-docker-mysql dockerfile來啓動並運行一個dockerfile,並在其中安裝了mysql的docker image,docker文件創建一個名爲root並且沒有密碼的用戶,我需要的是添加像這樣的dockerfile:使用dockerfile在mysql中創建一個默認數據庫
RUN mysql -uroot -p"" && mysql create database test;
所以,當我建立從泊塢窗文件的圖像,數據庫應該已經在那裏了。
使用這個tutum-docker-mysql dockerfile來啓動並運行一個dockerfile,並在其中安裝了mysql的docker image,docker文件創建一個名爲root並且沒有密碼的用戶,我需要的是添加像這樣的dockerfile:使用dockerfile在mysql中創建一個默認數據庫
RUN mysql -uroot -p"" && mysql create database test;
所以,當我建立從泊塢窗文件的圖像,數據庫應該已經在那裏了。
通過執行以下操作,我能夠完成向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。我認爲這可能是可能的,但過了一段時間,我發現上述解決方案更快更簡單。
您可以在容器啓動時傳遞ON_CREATE_DB env參數。從tutum README.md
docker run -d -p 3306:3306 -e ON_CREATE_DB="newdatabase" tutum/mysql
當您嘗試這會發生什麼 實例? – Behe
我嘗試了幾個命令,並得到diff錯誤,我試圖mysql -uroot「創建數據庫測試」,錯誤是:錯誤2002(HY000):無法通過套接字'/ var/run/mysqld連接到本地MySQL服務器/mysqld.sock'(2) – Mohammad
還試過mysqld -uroot -p「」「創建數據庫測試」,錯誤是:140710 10:12:28 [警告]使用唯一選項前綴key_buffer而不是key_buffer_size已被棄用,並且將在未來的版本中被刪除。請改用全名。 – Mohammad