概要
docker × railsでdokcker compose upした際に**「Could not find (gem.lock名)〜」**というエラーが発生した。
bundle install 時にgemのインストールが失敗しているとのこと。
別の人の環境では動いたので、記述は間違ってない。
dockerのvolumeを削除してみる。
環境
・MacOS Apple M1 バージョン11.4
・Docker 20.10.7
・Ruby 2.5.9
・Rails 5.2.6
volumeとは
ボリュームとは、データを永続化できる場所のこと。
**「名前付きボリューム」と「匿名ボリューム」**があり、名前付きボリュームの場合は Docker ホスト内で名前解決できるため、アクセスしやすい。
匿名ボリュームは適当にハッシュ値が振られる。
他のプロセスからはさわれないので安全。基本はこれを使うのがよい。
dockerのvolumeの中身を見る
% docker volume ls
DRIVER VOLUME NAME
local 3af7cc07ae15f717d55dcea4dc356c19247e3d72a4f347b41eca2050578569bf
local 02abf414f65facb0cc4538c873818568de2134dec2bcdcb9cbec13f3d017e8a3
local 5c6f637deeb7377eb7b4f1c9f839bc4510037089a778d813ddb6bcdd0d6fd856
local 4ec65427bac8ab1ca050e4e32819755534d99ae7aa587c0c0c661269751519b8
local 8ff3d7837fab59bcf5ad35e2d6957530832476256acafc4cd1823ad7b079323e
local 9674a4ab5a4ba4389a15f6c9cbcd2a9410c68d0e7af9f863b21e721787beae53
local 8413aaeaef3255be669cf5a34db05cdaeae94f770e1875b95232b8700b7a0e38
local be4abc0053855dd62de3adb3e5304e7f0a81af9b020e64515b98951fc29dc215
local ce84c2d173df0b00b5f59179b2d37c4c92b14ed1e79f4da6f6ced2aab5a39548
local db2896426db9f403582487693a7f844940f99ce1e9a8732b07087a4b776b0a27
local fbe080cb2f3b6d923f80d1ce29171c2979f5a5df9df5b38d77b13f50fe9d8f96
local ffa7b0f82a588661c0109b39a1b82015359a42549f6cc236276bbb812c50072b
local gaa48f5287da42614b2259ab6310c8c5f2c438a318ad29a272881146bcd46479
local gb9a6e857ca8e828ec80a872c9e934323c0504ac7ac18b8f8d848a2ac8eae5d2
local gc5f79f016bad0e1d33992ac65049c1cc2fddc70e1dc6c192ae7e37ccac48b79
local g9b4706c13fe06e327fe2b5b8b121a0c110ecdc49304196737f5725f14c2aa99
local g76d2e4d4fbb331251b380c67fc9581d275305f66ce979cffc8d176dbce23f18
local h357cd3c0f3dd302ddd66f7d898e8eb54715cb4f8b864f37ee56dc80deaeb2f3
local (ファイル名)_bundle
local (ファイル名)_node_modules
local (ファイル名)_rails_cache
このようにvolumeの中身が見れました。
自身の開いているファイルのvolumeをそれぞれ削除していきます。
それぞれvolumeを削除する
volumes:
rails_cache:
node_modules:
bundle:
volumeの中身とdocker-compose.ymlを見たときにそれぞれ同じものが3つあるので、それぞれ削除していきます。
% docker volume rm (ファイル名)_bundle
% docker volume rm (ファイル名)_node_modules
% docker volume rm (ファイル名)_rails_cache
これでvolumeをそれぞれ削除できました。
Buildする
buildすることでvolumeは再度新しく生成されるため、再度buildします。
% docker-compose build
upする
% docker-compose up
これで直りました。
他にもエラーがあれば都度更新します。