概要
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/ へアクセスすると以下のような表示が出るはずです。
主な使い方
VMの停止
% vagrant halt
VMの起動
% vagrant up
2回目以降は、以下のように35秒でVM、コンテナが起動します。
(MacBook Pro (Retina, Mid 2012)で計測)
主なソフトウェアのバージョン
- 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の使い方を知る必要がある
その他
- レポジトリ: https://github.com/matsubo/docker_rails_dev_env_example
- ドキュメントはREADME.mdに細かく記載してあります。
- Vagrantfileがエントリーポイントになるので、このファイルから追っていけると思います。
Comments
http://qiita.com/advent-calendar/2014/docker
この1日目に書かれているツールを使えばシェルスクリプトの代わりに、YAMLに設定を書けそう。
あと、プロダクションへのデプロイが考慮されていないので、その辺も追加する。
まぁ、この手法は一時的な手法なので、本線はdocker-composeでオーケストレーションがよいと思います。
自分は、この記事の手法を実際の開発では使っておりません〜