LoginSignup
9

More than 5 years have passed since last update.

posted at

updated at

開発環境のRailsのDBをboot2dockerのMySQLにしてみる

Railsの開発環境において、DBをsqliteからboot2docker&dockerで起動したMySQLに変更してみます。

6394678.png

Environment

  • OSX Ysemite 10.10.1
  • VirtualBox 4.3.20
  • boot2docker 1.4.1

Install VirtualBox

VirtualBoxがインストールされていない場合は、以下よりダウンロードします。
執筆時点では最新版は4.3.20でした。

Install boot2docker

以下より boot2docker.pkg をダウンロードしてインストールします。
執筆時点では最新版は1.4.1でした。

Setup boot2docker

boot2dockerを初期化します。

$ boot2docker init
Latest release for boot2docker/boot2docker is v1.4.1
Downloading boot2docker ISO image...
Success: downloaded

boot2dockerを起動します。

内部では、VirtualBox上でboot2dockeイメージを起動しています。

$ boot2docker up
Waiting for VM and Docker daemon to start...
..........................oooooooooooooooooooooo
Started.

    export DOCKER_CERT_PATH=/Users/suiseyy/.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1
    export DOCKER_HOST=tcp://192.168.59.103:2376

以下のようにexport設定を、bashやzshのrcやprofileに記述します。
IPの部分は動的に取得するようにしました。

$ vi ~/.zprofile

## Boot2Docker
export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2376
export DOCKER_CERT_PATH=/Users/susieyy/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1

Hello World!

動作確認を行います。
Hello Worldが表示されました。

$ docker run ubuntu echo "Hello World"
....
Hello World

Stop boot2docker

VirtualBox上でboot2dockeイメージを停止する場合以下のコマンでを実行します。

$ boot2docker down

Version

$ boot2docker version
Boot2Docker-cli version: v1.4.1
Git commit: 43241cb

Install MySQL

Download MySQL

OFFICIAL REPO MySQLイメージをダウンロードします。

$ docker pull mysql
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
mysql               latest              a385835786ac        9 days ago          236 MB

REF

Official Imagesは以下から探せます。

Start MySQL Container

MySQLを起動します。PORTをホストの13306にマッピングします。
mysql-serverは任意の名前です。
mysecretpasswordは任意のパスワードです。

$ docker run --name mysql-server -p 13306:3306 -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql -p 13306:3306
$ docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                     NAMES
7c4ece504bf3        mysql:latest        "/entrypoint.sh mysq   3 seconds ago       Up 3 seconds        0.0.0.0:13306->3306/tcp   mysql-server

接続テストをします。

$ mysql -u root -h $(boot2docker ip) --port 13306 -p
Enter password:
....
mysql>

接続できました。

Stop MySQL Container

MySQLコンテナを停止する場合は以下のコマンドを実行します。

$ docker stop mysql-server

Connect by Rails

今回の本筋ではないですが、dotenvを利用して設定値を記述しました。
Gemfileに以下追記します。

gem 'dotenv'
gem 'mysql2'
$ bundle install --path vendor/bundle

MySQL Containerに接続するように、.envdatabase.ymlを記述します。

DB_HOST=$(boot2docker ip)
DB_PORT=13306
DB_USER=root
DB_PASSWORD=mysecretpassword
config/database.yml
development:
  adapter: mysql2
  encoding: utf8
  database: your_database_name
  host: <%= ENV['DB_HOST'] %>
  port: <%= ENV['DB_PORT'] %>
  username: <%= ENV['DB_USER'] %>
  password: <%= ENV['DB_PASSWORD'] %>

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9