みなさんこんにちは、かじりです。Gemfileを更新したときに、docker compose buildしなおす理由と回避をまとめました
この記事1によると、Gemfileが変わったからそこからbuildしなおすのが理由。うろ覚えだけど、確かコマンドごとにレイヤーみたいなものがつくられるはずで、差分が検知されるとそれ以降のコマンドはやり直しだった気がする。
この記事2によると、volumeにbundlerの結果を配置すれば良い。
なので以下のように、volumeを設定し、bundle installすれば良い
services:
app:
volumes:
- bundle:/myapp/vendor/bundle
volumes:
bundle:
RUN bundle config set path 'vendor/bundle' && bundle install