LoginSignup
34

More than 5 years have passed since last update.

posted at

Docker で bundle install を爆速にする

Docker、残念なのはbundle installがクソ遅いですね。
ADDでディレクトリを突っ込んでからbundle installされている方が多いと思います。
そうすると、何かしら更新するだけで、Gemfileを変更しているかどうかに関わらず毎回bundle installが走ってしまいます。

もちろんgemフルインストールになるので、1-2分は余裕でかかってしまいますね。
Chef並みに遅くなり、悲しくなるので、対策を書きます。

Dockerfile
##Cache bundle install#################
WORKDIR /tmp
ADD ./Gemfile Gemfile
ADD ./Gemfile.lock Gemfile.lock
RUN bundle install
#######################################

をアプリのADDよりも上の方に入れると結果をキャッシュすることが出来ます。

これでGemfile入りでも4秒くらいでビルドできるようになります。

ところでDockerfileをどこで管理しようか迷っている方がいるかと思いますが、アプリのRootがデフォです。つまりアプリのソースと一緒に管理します。
レジストリを分けて管理するのはDocker wayではありません。

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
What you can do with signing up
34