MySQL
Redis
docker
docker-compose

コマンド一つで気軽に mysql (など)を立ち上げたいマン

複数プロジェクトに関わっている+それぞれ mysql のバージョンが違う、そんな時に使うと便利かもしれない。

https://github.com/regashia/backends

前提条件

docker-compose がインストールされている必要がある。

インストール

curl https://raw.githubusercontent.com/regashia/backends/master/bin/install.sh | sh

backends コマンドが /usr/local/bin に追加される。

使い方

$ backends help
Usage:
  backends [command]

Environments:
  MYSQL_VERSION
    default: latest
  MYSQL_PORT
    default: 3306
  REDIS_VERSION
    default: latest
  REDIS_PORT
    default: 3306

Commands:
  start
    立ち上げる
  stop
    コンテナをとめる
  remove_container
    コンテナを削除する
  remove_all
    コンテナ、データを含め、全てを削除する
  help
    ヘルプを表示する

mysql 最新バージョンを 3306 ポート、 redis 最新バージョンを 6379 ポートで立ち上げる。

$ backends start

$ docker ps
CONTAINER ID  IMAGE         ...      PORTS                   NAMES
xxx           redis:latest  ...      0.0.0.0:6379->6379/tcp  redis
xxx           mysql:latest  ...      0.0.0.0:3306->3306/tcp  mysql

mysql 5.7 を 8888 ポート、 redis 2.8 を 9999 ポートで立ち上げる。

$ MYSQL_VERSION=5.7 MYSQL_PORT=8888 REDIS_VERSION=2.8 REDIS_PORT=9999 backends start

$ docker ps
CONTAINER ID  IMAGE      ...  PORTS                   NAMES
xxx           mysql:5.7  ...  0.0.0.0:8888->3306/tcp  mysql
xxx           redis:2.8  ...  0.0.0.0:9999->6379/tcp  redis

カスタマイズ

${HOME}/.config/backends/docker-compose.yml を編集する。

アプリケーションから使う時の例

Rails から backends start で立ち上げた mysql に接続するときの database.yml 。

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: ''
  url: 'mysql2://127.0.0.1:3306'

development:
  <<: *default
  database: appname_development

test:
  <<: *default
  database: appname_test

production:
  <<: *default
  database: appname_production

これで接続できるはず。