Dockerを使って好きなバージョンのMySQLで開発を進める方法を紹介したいと思います。
Dockerのインストール
DockerとDocker Composeをインストールして下さい。Macを利用している方は以下のリンクからインストールして下さい。
Docker For Mac | Docker
これでDockerとDocker Composeが利用できるようになります。
docker-compose.ymlの準備
次にdocker-compose.ymlを準備します。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
- ./docker/mysql:/etc/mysql/conf.d
ports:
- "3307:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: railsdevroot
MYSQL_USER: railsdev
MYSQL_PASSWORD: railsdev
volumes:
db_data:
プロジェクトと紐づくようにRailsのルートフォルダにファイルを作成して下さい。
細かい設定の意味については下記のドキュメントを参考にして下さい。
Compose file version 3 reference | Docker Documentation
volumes:
- db_data:/var/lib/mysql
- ./docker/mysql:/etc/mysql/conf.d
MySQLは/etc/mysql/conf.dに*.cnfというファイルが存在するとそちらを設定ファイルとして読み込んでくれるので、個別に設定が必要な場合は独自にファイルを用意してvolumnsセクションでパスを設定します。
今回はDocker用の設定ファイルということで便宜上docker/mysql/というフォルダを作ってそこに設定ファイルを作り読み込むようにしています。
こちらは各プロジェクトに合わせてて適宜読み替えて下さい。
Rails側の設定
あとはRailsのdatabase.ymlで接続先を設定するだけです。
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
socket: /tmp/mysql.sock
development:
<<: *default
database: sample_development
port: 3307
password: railsdevroot
host: 127.0.0.1
気をつける箇所はhostを設定していないとホスト側のDBへ繋ごうとするので忘れずに指定する必要があります。
これで複数のプロジェクトで異なるバージョンのMySQLを使用していても、互いに影響することなく開発を進めることができます。
皆さんもぜひ試して下さい。