簡體   English   中英

在構建時在Docker容器中創建MySQL數據庫

[英]Create MySQL database in Docker container at build time

我需要使用大型數據庫創建Docker映像。 可以使用腳本populate_net_db.sh從指定的文件夾中populate_net_db.sh數據庫。 我需要創建在構建時完成此操作的Docker映像,以便使用數據庫的開發人員可以創建容器,而不必等待很長時間才能填充數據庫。

我做了什么(這有效,但不是我需要的):

  • 我可以在運行時創建數據庫,並使用mysql Docker映像填充它,並將所需文件放入docker-entrypoint-initdb.d文件夾中。 運行映像時,這將需要花費大量時間來進行設置,但是可以根據需要進行工作,而我可以根據需要使用docker exec -it "image_name" mysql -u root -p訪問數據庫。

  • 我可以在構建時使用RUN命令創建相同的數據庫,並查看在構建時正確設置了表,但是,當我運行此類映像時,將建立新的mysql DB,而構建時的DB消失了。

有沒有辦法在docker exec -it "image_name" mysql -u root -p顯示構建時數據庫?

我設法通過保存的內容來解決這個問題/var/lib/mysql/編譯期間作為在臨時文件夾: mv /var/lib/mysql /mnt/tmp/ 然后,我創建了一個入口點腳本來放入/docker-entrypoint-initdb.d文件夾。 該腳本在運行時刪除/var/lib/mysql/內容,並將保存的狀態從/mnt/tmp/移出。 這將導致MySQL重新啟動。 但是,數據庫在容器運行時變得非常快速可用。 對於27GB的數據庫,此方法大約需要5分鍾,而從轉儲文件中加載數據庫需要1小時以上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM