Dockerを使って、vagrant upするだけで面倒なRailsの開発環境を瞬時に構築

docker

概要

  • vagrant up 一発でRuby on Railsの開発環境を構築出来るようにしました。
  • ローカルのファイルシステムをDocker上のアプリケーションサーバから参照しているので好きなテキストエディタを使えます。
  • すぐにRailsで開発を行えます。カスタマイズしたい場合はForkして頂くのがいいと思います。
  • dockerあれば、chef使わなくて良いですね。

初期設定

VirtualBox用のVMイメージをダウンロードします。(任意)

% vagrant box add precise64 http://files.vagrantup.com/precise64.box

あとは、サンプルコードをcloneしてvagrant upするだけです。

  • 初回は30分程度かかります。
    • Docker imageのダウンロードとimageの構築があるので。
    • これでも、Containerのベースは1つにしてあるので、ダウンロード時間は短くするようにしています。
    • UbuntuのCDNが遅いというのも1つの要因ではあります。
  • 2回目以降は30秒程度でコンテナが起動します。
% git clone [email protected]:matsubo/docker_rails_dev_env_example.git
% cd docker_rails_dev_env_example
% vagrant up

http://localhost:3000/ へアクセスすると以下のような表示が出るはずです。

Screen Shot 2015-01-04 at 00.14.55

主な使い方

VMの停止

% vagrant halt

VMの起動

% vagrant up

2回目以降は、以下のように35秒でVM、コンテナが起動します。
(MacBook Pro (Retina, Mid 2012)で計測)

Screen Shot 2015-01-04 at 00.52.20

主なソフトウェアのバージョン

  • Ruby 2.2 + Ruby on Rails 4.2
  • MySQL 5.6
  • Redis 2.8

良い点・悪い点

良い点

  • VirtlaBoxとVagrantだけあれば、容易にプロジェクト毎に統一された開発環境を構築出来る。
  • 2回目以降の起動が高速
  • ローカルのファイルシステム上のファイルを変更して、即時プレビュー出来るので好きなエディタで開発出来る。

悪い点

  • Gemfileを更新したら、
    • ./d rebuildしてrailsのイメージを再構築する必要があり、bundle installをゼロから行うため時間が4分ぐらいかかる。
    • 手元のホストでもコマンドを直接打つためにbundle installしないといけない。
  • 開発者がDockerの使い方を知る必要がある

その他

参考資料

コメント

  1. Yuki Matsukura より:

    http://qiita.com/advent-calendar/2014/docker
    この1日目に書かれているツールを使えばシェルスクリプトの代わりに、YAMLに設定を書けそう。

    あと、プロダクションへのデプロイが考慮されていないので、その辺も追加する。

  2. Yuki Matsukura より:

    まぁ、この手法は一時的な手法なので、本線はdocker-composeでオーケストレーションがよいと思います。
    自分は、この記事の手法を実際の開発では使っておりません〜