2017-10-13 47 views
0

我讀過最近的帖子Setting up MySQL and importing dump within Dockerfile,但找不到答案。Docker的mysql問題

我想要的是建立與創建的數據庫,用戶和一些其他數據的自定義MySQL映像。這裏是我的Dockerfile(簡體):

FROM mysql:5.7 

    ENV MYSQL_ROOT_PASSWORD=root 

    RUN service mysql start && \ 
     mysql -uroot -p$MYSQL_ROOT_PASSWORD -e "CREATE DATABASE mydb;" && \ 
     mysql -uroot -p$MYSQL_ROOT_PASSWORD -e "SHOW databases;" && \ 
     service mysql stop 

ENTRYPOINT service mysql start && /bin/sh 

圖像被成功建成並mydb的數據庫被列爲「SHOW數據庫」的輸出。 但是,當我運行容器基於這個圖像我看到根密碼是空的,並且mydb數據庫丟失。

我該如何解決這個問題?謝謝?

回答

0

您可以使用init腳本。它更容易然後乳寧和停止MySQL來運行命令

初始化一個新的實例

當容器啓動的第一次,具有 一個新的數據庫指定的名稱將被創建和使用提供的 配置變量進行初始化。此外,它將執行 擴展名爲.sh,.sql和.sql.gz的文件,這些文件位於 /docker-entrypoint-initdb.d中。文件將按字母順序執行 。您可以通過將SQL 轉儲裝入該目錄並使用貢獻的 數據提供自定義映像,從而輕鬆填充您的mysql服務。 SQL文件將默認導入到由MYSQL_DATABASE變量指定的數據庫 。

+0

謝謝,謝爾蓋。我會嘗試。但是爲什麼我在RUN指令中創建的數據庫丟失了?這是否意味着在第一個容器運行之前初始化與數據庫相關的數據是沒有意義的? – Sergey

+0

這是個好問題。你能告訴我'Dockerfile'你在哪裏使用該基礎圖像? –

+0

Sergey,我在問題描述中指定了Docker文件內容 – Sergey