dockerで起動したmysqlDBにrailsを接続する設定

dockerでmysqlDBだけ起動させてrailsから接続したい

 以下の理由からやってみた。

  • dockerでrailsの起動に使うミドルウェア一式を立ち上げると、起動に時間がかかったり、動作が重かったりしたから。
  • プロジェクトごとに異なるバージョンのmysqlを使っており、切り替えるのが面倒、というかほとんどできなかったから。

設定ファイルの例

 docker-compose.ymlでコンテナで起動するmysqlの設定を行う。
 database.ymlでrailsからコンテナ内のmysqlDBに接続する設定を行う。
 各設定ファイルの例は以下の通り。

docker-compose.yml

services:
  mysql:
    image: mysql:5.5
    environment:
      MYSQL_USER: root
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    volumes:
      - db-data:/var/lib/mysql
    ports:
      - 127.0.0.1:3001
volumes:
  db-data:
    driver: local

database.yml

default: &default
  adapter: mysql2
  encoding: utf8
  host: 127.0.0.1
  port: 3001
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock
  collation: utf8_unicode_ci
  charset: utf8

起動

# dockerの起動
docker-compose up

# ちゃんとdbだけ起動してるか確認
docker ps

=>
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                      NAMES
6b0890ce55f5   mysql:5.5             "hoge"   48 seconds ago   Up 25 seconds   127.0.0.1->3306/tcp   database