2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerとRails環境でのGemの永続化

Posted at

#環境
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の保存がされないので、今回のエラーが発生したみたいです。
こちらのサイトが分かりやすく、助かりました!

#参考
https://nishinatoshiharu.com/datavolume-for-gem/#Docker

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?