LoginSignup
10
9

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-12-23

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'] %>
10
9
0

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
  3. You can use dark theme
What you can do with signing up
10
9