Rubyと筋肉とギターとわたし

筋トレが仕事です

【Docker】railsコンテナでbundle installしているのにCould not find gemと出る

f:id:rdwbocungelt5:20180816164743p:plain

どうもてぃです。

既存プロジェクトをdocker-composeで構成作るということで結構苦労してます。

いくつかトラブルがあったんですが、その中でも題にあるエラーで苦しみました。

環境

  • Docker version 18.09.7, build 2d0083d
  • docker-compose version 1.25.4, build unknown
  • rails 5.2.0

試したこと

以前も同じようなエラーが出たのでvolume関係で怒られているんだろうなと、検討をつけて対処しようとしました。

参考にしていたのがこちらの記事。

qiita.com

最後の対応にあったvolumeを削除するパターンを試しました。

volumeを一回削除し再度作成することによって、volumeの中身を/usr/local/bundleと同じにする

こちらですね。

僕が作成したプロジェクトではskip bundleは行っていなかったですし、bundle installも試していましたので、最後の頼みの綱、すがる思いで試してみました。

が、駄目でした。

同じBundler::GemNotFound: Could not find gemです。謎…

1から手順を見直す

手順を見直したとき、docker-composeを使ってrails newを行っていなかったことを思い出しました。

つまり、Dockerfileから先にimageを作成して、そのイメージを元にrails newしたということです。

で、 docker-compose buildした際に、先に作成したimageを指定してbuildしていなかったので、Gemfileで差が出た…と。

馬鹿じゃん自分。

解決策

めっちゃ簡単。

Gemfile.lockを削除してビルドし直すだけ。

$ rm Gemfile.lock; touch Gemfile.lock

$ docker-compose run <コンテナ名> bundle install

しょうもないことに1時間ほど費やしてしまいました。

もう二度と同じ轍を踏まないです。

ここに誓います。