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