ホームページ > データベース > mysql チュートリアル > Docker コンテナ内で MySQL データベース スキーマを確実に初期化する方法

Docker コンテナ内で MySQL データベース スキーマを確実に初期化する方法

Barbara Streisand
リリース: 2024-12-05 03:54:13
オリジナル
922 人が閲覧しました

How to Reliably Initialize a MySQL Database Schema within a Docker Container?

Docker コンテナ内のスキーマを使用して MySQL データベースを初期化する方法

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート