Dockerを使って好きなバージョンのMySQLで開発を進める方法を紹介したいと思います。
Dockerのインストール
DockerとDocker Composeをインストールして下さい。Macを利用している方は以下のリンクからインストールして下さい。
これで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を使用していても、互いに影響することなく開発を進めることができます。
皆さんもぜひ試して下さい。