DockerのMySQLに初期データを投入する

2019年4月1日

本記事では、Docker ComposeでMySQLのコンテナを起動します。その際に、初期データを投入できるようにdocker-compose.ymlを設定していきます。

 

 

まずは適当なディレクトリにおいて、docker-compose.ymlファイルを作成し、下記のように記述します。

9行目
公式のMySQLイメージからコンテナを生成・起動させた場合、コンテナ側の「/docker-entrypoint-initdb.d」ディレクトリに.sqlや.shのファイルを配置すると、そのファイルが自動的に実行され初期データとしてMySQLに投入されるようになります。そのためにはホスト側とコンテナ側のディレクトリをマウントし、ホスト側にあらかじめ初期データ用のファイルを準備しておく必要があります。上記では、ホスト側に「initdb.d」ディレクトリを作成し、コンテナ側の「/docker-entrypoint-initdb.d」ディレクトリにマウントさせています。

 

 

次に初期データとしてのsqlファイルをinitdb.dディレクトリ内に用意します。docker-compose.ymlファイルと同ディレクトリに、initdb.dディレクトリを作成し、その中にinit.sqlというファイルを作成します。

 

ディレクトリ構造は下記のようになります。

 

init.sqlファイルは下記のように記述しました。sample01データベースを作成したらnameテーブルを作成し、その中に太郎、花子、令和というデータを投入しています。

 

コンテナを起動させます。

 

起動しているコンテナの確認。

 

コンテナに入り、MySQLに接続。

 

sample01データベースを確認。

 

nameテーブルに初期データが投入されていることを確認。

 

 

関連ページ

Docker Compose 入門 [MySQL]

 

Dockerのバインド・マウントを利用する[-v]

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー