Docker コンテナ内のスキーマを使用して MySQL データベースを初期化することは、データベースの作成を伴う一般的なタスクですそしてそこにスキーマをロードします。これを行う 1 つの方法は、Dockerfile と CMD コマンドを使用してデータベースを初期化するスクリプトを実行することです。ただし、CMD コマンドは単一のコマンドのみを実行でき、一連のコマンドは実行できないため、この方法では問題が発生する可能性があります。
この問題を解決するには、より信頼性の高い方法は、ADD コマンドを使用してデータベースを追加することです。スキーマ ファイルを /docker-entrypoint-initdb.d ディレクトリにコピーします。コンテナーの作成時に、docker-entrypoint.sh スクリプトは、このディレクトリーにある SQL スクリプトを MySQL データベースに対して自動的に実行します。
変更された 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
スキーマ ダンプの準備:
始める前に、 MySQL スキーマのダンプが schema.sql という名前のファイルに保存されていることを確認してください。これは、mysqldump コマンドを使用して取得できます。
mysqldump -h <your_mysql_host> -u <user_name> -p --no-data <schema_name> > schema.sql
Docker MySQL インスタンスの起動:
Dockerfile が変更され、スキーマ ダンプが準備されたら、 Dockerを使用してDocker MySQLインスタンスを起動できますCompose:
docker-compose build docker-compose up
これらの手順に従うことで、Docker コンテナ内のスキーマを使用して MySQL データベースを効果的に初期化できます。 docker-entrypoint-initdb.d ディレクトリにより、コンテナーの作成時にスキーマが確実に読み込まれるため、データベースに目的のスキーマを事前に設定できるようになります。
以上がDocker コンテナ内で MySQL データベース スキーマを確実に初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。