もふもふ技術部

DockerでRailsのブランクプロジェクトを動かしてみる(Webrick, Sqlite)


こちらの続きから
DockerでCentOS6.6 + Ruby(rbenv)環境を作る
http://j-caw.co.jp/blog/?p=1568

Dockerfileを修正して行きます。

みたいな感じで書きたかったんだけど環境変数を読んでくれず command not found になってしまうので、 bash -l -c で実行している。なんかイケてない。

sqliteを使うので bundle install より前にyumでインストールする必要がある。入ってないとbundle install時にGemNotFoundになっちゃいます。

CMDが重要。CMDはDockerfile内に一度しかかけず、docker runしたときに実行されるプロセスを記述する。通常dockerコンテナでは一つのプロセスしか実行出来ないのでここに記述されるのがコンテナの主たる役割になると思う。

ちなみにCMDを無視してbashで起動することも出来る。デバッグの時とかに。

Dockerfileは処理結果をキャッシュしてくれているので、修正を加えてbuildしても結果が早いのですが、Dockerfileの先頭の方を修正すると、それ以降のコマンドが全て実行されるので注意が必要。

rbenv + Rubyのインストールが走るとものすごい時間がかかっちゃうので気をつけたい。

デフォルトでtherubyracerがコメントアウトされてるけど有効にしないと下記エラーになる。sedでコメント解除した。

gemのインストールが激おそのろのろ丸

特にbundlerのインストールに恐ろしく時間かかった。15分くらい待った気がする。

/etc/resolv.confに追記すると早くなるよーって情報あったけど変わりなかった。
http://qiita.com/hissanova/items/56ce07d5629b6d79d1b3

gemのインストールでドキュメントをインストールしないようにした。やっぱり遅い。
http://qiita.com/kei_q/items/d13235157fcfc435489d

この辺は試せてないけどどうだろう。
http://d.hatena.ne.jp/suu-g/20130908/1378623978

gem install rails bundlerあたりは独立したDockerfileにして基本いじる必要がないレベルに持って行ってFROMで継承する形にすればある程度は防げるようになるかな。

確認

3000番をマッピングしてdocker runする。

まずはホストOS側からhtmlが返ることを確認。

次にホストOSの3000番を解放して外部のPCからアクセスしてみる。

http://your-host:3000/

できたあああ!!

スクリーンショット 2014-12-07 14.47.26

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。
Tagged on: ,