#環境
Docker version 20.10.8
Rails 5.2.6
#事象
ログイン機能を実装するためにbcryptをGemfileに追加し、その後bundle install
してdocker-comose up
すると、「そんなgemはないよ!」というエラーが出ました。
web_1 | Bundler::GemNotFound: Could not find bcrypt-3.1.16 in any of the sources
・・・(略)
web_1 exited with code 1
あれ?bundle installしたのになんで。。
#解決策
先に解決策からです。
gemの永続化を行いました。
docker-compose.yml
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_PASSWORD=password
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/book_app
- gem-data:/usr/local/bundle #ここを追加
ports:
- "3000:3000"
depends_on:
- db
volumes:
gem-data: #ここを追加
上記を追加した後、bundle installを行いコンテナを再起動すると解決しました!!
$ docker-compose run web bundle install
$ docker-compose down
$ docker-compose up
#原因
原因はgemの永続化ができていなかったからです。
gemの永続化を行わないとコンテナ上でbundle installを実行してもDockerイメージにはgemの保存がされないので、今回のエラーが発生したみたいです。
こちらのサイトが分かりやすく、助かりました!