「DockerのMySQLコンテナに初期データとしてdumpファイルをセットしたいんだけどどうやるの?」
この記事では、この疑問に対する答えをお伝えします。
少しでもDockerを使って開発を行う際の参考になれば幸いです。
使用するMySQLのDockerイメージ:mysql:8.0
DockerのMySQLコンテナに初期データを入れる方法
結論から言うと、MySQLコンテナ内の/docker-entrypoint-initdb.dディレクトリ内にdumpファイルをセットすればOKです。
docker-comopse.yamlで書くとこんな感じ。
db: container_name: db image: mysql:5.7 ports: - 3306:3306 volumes: - ./docker/db:/docker-entrypoint-initdb.d environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: database MYSQL_USER: user MYSQL_PASSWORD: pass
./docker/dbディレクトリ配下には初期データとして利用するdumpファイル(db.sql)が置かれており、そのdumpファイルをdocker-entrypoint-initdb.d配下にマウントしています。
実際にこの状態でコンテナを立ち上げてディレクトリ配下を見てみると、
data.sqlが置かれています。
さらに、データベースを確認すると、
dumpファイル内で定義してある初期データのテーブルが作成されています。
以下の説明にあるように、DockerのMySQLコンテナでは、起動時に/docker-entrypoint-initdb.d配下にあるファイルが実行されます。
そのため、ここにdumpファイルを置いておくことで起動時に初期データ(テーブル)が作成されます。
it will execute files with extensions .sh, .sql and .sql.gz that are found in /docker-entrypoint-initdb.d. Files will be executed in alphabetical order. You can easily populate your mysql services by mounting a SQL dump into that directory and provide custom images with contributed data.
/docker-entrypoint-initdb.d配下の.sh, .sql and .sql.gz拡張子を持つファイルがアルファベット順に実行されます。SQLのdumpファイルをこのディレクトリに置くことで、簡単に初期データをセットすることができます。
DockerのMySQLコンテナに初期データを入れる方法まとめ
今回はDockerのMySQLコンテナに初期データを入れる方法を解説しました。
初期データを入れるには、MySQLコンテナ内の/docker-entrypoint-initdb.dディレクトリ内にdumpファイルをセットすればOKです。
今回は以上となります。
少しでもDockerのMySQLを使って開発をする際の参考になっていれば幸いです。