在Docker 容器中使用架構初始化MySQL 資料庫是一項涉及建立資料庫的常見任務並將模式載入到其中。實現此目的的一種方法是使用 Dockerfile 和 CMD 命令來執行初始化資料庫的腳本。不過,這種方法可能會遇到困難,因為 CMD 指令只能執行單一指令,而不能執行一系列指令。
為了解決這個問題,更可靠的方法是使用 ADD 指令來新增資料庫schema 檔案複製到 /docker-entrypoint-initdb.d 目錄。建立容器後,docker-entrypoint.sh 腳本會自動針對 MySQL 資料庫執行位於此目錄中的任何 SQL 腳本。
修改的Dockerfile:
FROM mysql:5.7.15 MAINTAINER me ENV MYSQL_DATABASE=<schema_name> \ MYSQL_ROOT_PASSWORD=<password> ADD schema.sql /docker-entrypoint-initdb.d EXPOSE 3306
準備架構轉儲:
在開始之前,請確保您有保存在名為schema.sql 的檔案中的MySQL 模式轉儲。這可以透過使用mysqldump 命令來獲得:
mysqldump -h <your_mysql_host> -u <user_name> -p --no-data <schema_name> > schema.sql
啟動Docker MySQL 實例:
修改Dockerfile 並準備好架構轉儲後,您可以使用Docker Compose啟動Docker MySQL實例:
docker-compose build docker-compose up
透過以下步驟,你可以有效地初始化一個 MySQL具有 Docker 容器內架構的資料庫。 docker-entrypoint-initdb.d 目錄可確保在容器建立期間載入架構,從而允許您擁有一個包含所需架構的預先填充資料庫。
以上是如何在 Docker 容器內可靠地初始化 MySQL 資料庫架構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!