「MySQLをDockerコンテナで用意する方法(その2) | hiro345」の続きです。
初回起動時にDBデータを投入したいときもありますが、やり方が用意されています。mysqlコンテナの/docker-entrypoint-initdb.dというディレクトリに、.sqlまたは.shファイルを置いておくとそれが実行される仕様になっているそうです。
確認のために、下記のようなスクリプトを作って動かしてみると良いでしょう。サーバの初回起動時にCREATE TABLEが実行されます。この仕組を使えば、初期データ投入などを行うことができます。
#!/bin/sh
d="/var/opt/app001/mysqld/docker-entrypoint-initdb.d"
if [ ! -e ${d} ]; then
mkdir -p ${d}
fi
sh -c "cat << EOF > ${d}/create_table.sql
CREATE TABLE users (id INT, name VARCHAR(255));
EOF"
docker run \
-v ${d}:/docker-entrypoint-initdb.d \
-d \
--name mysqld \
-e MYSQL_ROOT_PASSWORD=secret \
mysql