LoginSignup
5
2

More than 5 years have passed since last update.

dockerを活用してみたかったので、RailsのDB環境だけdocker使うようにしてみた

Posted at

dockerでなにかやりたい…
現在vagrantを利用しているRailsプロジェクトをまるっと、dockerに載せ替えたい…そう、最初は思っておりました。
ちょっと大変そうだったので、とりあえず今回はDBだけdocker化してみました。
なお備忘録的なものなので、参考にする際には自己責任でお願いします。

環境

mac
既存のRails開発環境があって、DBの環境だけ増やすといった場合を想定しています。

dockerをインストール

正直、ここが一番混乱しました。
なにせmacにdockerを導入する方法が何通りもあり、ベストプラクティスというものがわからない状態だったためです。
多分docker for macを使うのがいいのかもしれないのですが、とりあえず的なものも含めていろいろと参考情報が多かったのでdocker-machineを使用してみました。

Docker Toolboxのインストール

ここからダウンロード、インストールしてください
https://www.docker.com/products/docker-toolbox

docker-machineでvirtualboxをつくる

$ docker-machine create --driver virtualbox development

作成できたかを確認する
$ docker-machine ls
作成したdevelopmentの情報が表示されていればOKです。

ローカルからdockerコンテナを操作できるようにする
$ eval "$(docker-machine env development)

DB(今回はpostgresql)コンテナを作成する

※バージョン9.3.15を使用する場合
$ docker pull postgres:9.3.15

インストールが完了したら、起動する
postgresqlで使用するポート:5432をポートフォワードします。
$ docker run -d -p 5432:5432 --name postgres postgres:9.3.15
psqlコマンドを使用するときは以下のコマンドを使用します。
$ docker exec -it postgres psql -U postgres

postgresqlにDBを作成(レストア)する

まずはDBを作成します。
$ docker exec -i postgres createdb 作成するDB -U postgres

既存DBからバックアップしてきたデータをレストアします。
$ cat dumpファイル | docker exec -i postgres psql -d 作成したDB -U postgres

docker側での作業は一旦これで完了です。

既存のRailsプロジェクトからdockerのDBに接続する。

Railsのconfig/databases.ymlの設定を変更します。
既存のファイルは適宜バックアップしておいてください。

今回はローカル環境(develop)のみを対象にします。
developmentの部分だけ変更します。

development:
  <<: *default
  adapter: postgresql
  database: 作成したDB
  username: postgres
  host: XXX.XXX.XXX.XXX ⇐ docker-machine lsで確認できたIPアドレスを設定します。
  port: 5432

ファイル内容を変更後、Railsを再起動してください。
以上でRails側の作業も完了です。

感想

こんな感じで、DBだけdockerを使って構築できました。
万が一DBを壊してしまっても、作り直しやすいですし
コンテナ側のIPやポートを調整すれば複数のDB環境を用意できるのかな、と思います。
構築方法についてはdocker-composeを使うほうが良いのだろうか、、、みたいな感じもしております。

5
2
1

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
5
2