ホームページ >データベース >mysql チュートリアル >Docker コンテナ内で MySQL データベース スキーマを正常に初期化するにはどうすればよいですか?

Docker コンテナ内で MySQL データベース スキーマを正常に初期化するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-04 06:41:101022ブラウズ

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

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

スキーマを使用したデータベースの初期化は、特に Docker コンテナを使用する場合、複雑なプロセスになる可能性があります。この記事では、Docker コンテナを使用してスキーマを使用して MySQL データベースを初期化するときに発生する一般的な問題に対処し、スキーマをファイルにダンプし、それを /docker-entrypoint-initdb.d ディレクトリに追加することに基づいた解決策を提供します。

問題の説明

MySQL データベースを使用して Docker コンテナを作成し、次のコマンドを使用してスキーマで初期化しようとしたときDockerfile:

FROM mysql
MAINTAINER (me) <email>

# Copy the database schema to the /data directory
COPY files/epcis_schema.sql /data/epcis_schema.sql

# Change the working directory
WORKDIR data

CMD mysql -u $MYSQL_USER -p $MYSQL_PASSWORD $MYSQL_DATABASE < epcis_schema.sql

コンテナーの起動に失敗し、CMD コマンドが正常に実行されません。

解決策

スキーマを使用してデータベースを初期化するには、次の手順に従います。 :

  1. MySQL スキーマをファイルにダンプします使用方法:
mysqldump -h <your_mysql_host> -u <user_name> -p --no-data <schema_name> > schema.sql
  1. スキーマ ファイルを Dockerfile の /docker-entrypoint-initdb.d ディレクトリに追加します:
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
  1. Docker MySQL インスタンスを起動します使用:
docker-compose build
docker-compose up

/docker-entrypoint-initdb.d ディレクトリを使用すると、コンテナの初期化時に SQL ファイルが MySQL データベースに対して自動的に実行され、データベースが確実に初期化されます。必要なスキーマ。

以上がDocker コンテナ内で MySQL データベース スキーマを正常に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。