ローカルで開発する時に、Docker上のDBのディスクはRamdiskに割り当てる | 熱脳しゃちょのブログ

熱脳しゃちょのブログ

おせっかい焼SE兼プログラマ兼……の辛い日々と、思う事なぞ

Ramdiskは揮発性のDiskなので再起動時に再構築する必要は出るが、UnitTestなどでしばく時、Ramが相手だと心置きなくできるし、SSDより早い。

本来なら、Local環境のDBはSSDに、UnitTest環境のDBはRamdiskに、ってやれればいいんだが。

 

MacでRamdiskを作るには、下のソースをramdisk.shとでもして実行属性をつけて、起動時に実行させればOK。

 

#!/usr/bin/env bash

# 512MB 1048576
# 1GB     2097152
# 2GB     4194304
NUMSECTORS=2097152
MOUNTPOINT=/Users/docker/ramdisk

if [ -d "$MOUNTPOINT" ]; then
   rm -f -r "$MOUNTPOINT"
fi
mkdir -p "$MOUNTPOINT"

# RAM Disk
RAMDISK=`hdiutil attach -nomount ram://$NUMSECTORS`
newfs_hfs $RAMDISK
mount -t hfs $RAMDISK $MOUNTPOINT

# Make directory
mkdir -p "${MOUNTPOINT}/unittest/mysql/data/"

chmod -R 777 "$MOUNTPOINT"


 

MOUNTPOINTとかその下のディレクトリ名はよきに計らってもらって、Dockerからマウントする。

  volumes:
    - /Users/docker/ramdisk/unittest/mysql/data:/var/lib/mysql