やりたいこと
MySQL8を簡単に立ち上げて動作確認をできる方法を作りたい。
方法
- 以下のファイルを適当なディレクトリーに作成
- 変数と設定ファイルを変更(【変更対象】と明記した部分)
-
bash start_mysql.sh
で起動
start_mysql.sh
# 【変更対象】
# 各種変数を設定
dir_name=$RANDOM # 一時ディレクトリー用のディレクトリー名。MySQLの設定ファイルを入れる
conf_dir_path=/tmp/docker/mysql/${dir_name} # とりあえずtmpに作る
conf_file_path=${conf_dir_path}/mysql.cnf # 設定ファイルのパス
local_mnt_dir=/path/to/work_dir/20240320 # マウントするディレクトリー。コンテナ上からアクセスしたいファイルを置いたディレクトリー
# 【変更対象】
# 設定ファイルの準備(ここで必要な設定を読み込ませる。以下の設定ファイルは例なので必要な設定を追加する)
mkdir -p ${conf_dir_path}
cat > ${conf_file_path} <<EOF
[mysqld]
character-set-server=utf8
local-infile=1
[mysql]
local-infile=1
EOF
# コンテナが残っていたら消す
docker rm -f some-mysql
# コンフィグを読み込み、ローカルディレクトリーをマウントし、dockerコンテナを起動する
docker run -v ${conf_dir_path}:/etc/mysql/conf.d -v ${local_mnt_dir}:/tmp/tmp_date --name some-mysql -e MYSQL_ROOT_PASSWORD=password -d mysql
# コンテナが起動しきるまで待つ。10秒は適当なので短くてもよいかもしれない
sleep_seconds=20
echo "waiting for mysql to start up (for ${sleep_seconds} seconds)"
sleep ${sleep_seconds}
# mysqlクライアントでログイン
docker exec -it some-mysql mysql -ppassword -h 127.0.0.1
# 終わったらコンテナを削除する。
docker rm -f some-mysql