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ではありません。