概要
CIでテストの時だけ一時的にDBを立ち上げ、テストが終わったら削除したいってことありませんか?
Dockerを使ってそれを行うスクリプトです。
スクリプト
#/bin/sh
CONTAINER_ID=`docker run --rm -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=test_db -e TZ=Asia/Tokyo -d mysql:5.6 mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci`
CONTAINER_IP=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $CONTAINER_ID`
trap finally EXIT
function finally {
docker stop $CONTAINER_ID
}
until docker run --rm busybox nc -z -v -w30 $CONTAINER_IP 3306
do
echo "Waiting for database connection..."
sleep 3
done
# ここでテストを実行する(DB名やパスワードなどは実行パラメータか環境変数で指定する)