前提
Rails・Docker初心者です。伝わりづらい内容で恐縮ですが、どうぞよろしくお願いいたします。
Ruby on Railsで作成したアプリの開発環境にDockerの導入をしています。
実現したいこと
Ruby on Railsで作成したアプリ(開発環境)にdocker-composeを使用し構築をしています。
作成アプリのディレクトリに、「Dockerfile」「docker-compose.yml」のファイルを作成し、コマンド実行でDockerの導入をしています。
上記のファイルを作成後、コマンド「docker-compose build」を実行すると、以下のエラーが発生し、ビルドができない状態になっています。
エラーメッセージ
issei1213@MacBook my_app % docker-compose build db uses an image, skipping Building web Step 1/9 : FROM ruby:2.5.1 ---> 3c8181e703d2 Step 2/9 : RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs ---> Using cache ---> 042bc1175782 Step 3/9 : RUN mkdir /myproject ---> Using cache ---> d18444e6727c Step 4/9 : WORKDIR /myproject ---> Using cache ---> b8fd61f51b1c Step 5/9 : ADD Gemfile /myproject/Gemfile ---> Using cache ---> b1abddb9eefb Step 6/9 : ADD Gemfile.lock /myproject/Gemfile.lock ---> Using cache ---> 7b400e0dea6b Step 7/9 : RUN gem install bundler ---> Using cache ---> 9d9b58c36163 Step 8/9 : RUN bundle install ---> Running in e64abf280e87 You must use Bundler 2 or greater with this lockfile. ERROR: Service 'web' failed to build: The command '/bin/sh -c bundle install' returned a non-zero code: 20
該当のソースコード
Dockerfile
1FROM ruby:2.5.1 2RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs 3RUN mkdir /myproject 4 5WORKDIR /myproject 6 7ADD Gemfile /myproject/Gemfile 8ADD Gemfile.lock /myproject/Gemfile.lock 9 10RUN gem install bundler 11RUN bundle install 12 13ADD . /myproject
docker
1version: '3' 2services: 3 db: 4 image: mysql:5.6 5 environment: 6 MYSQL_DATABASE: my_app_development 7 MYSQL_ROOT_PASSWORD: 8 MYSQL_USER: root 9 MYSQL_PASSWORD: 10 ports: 11 - "3306:3306" 12 web: 13 build: 14 context: . 15 dockerfile: Dockerfile 16 command: bundle exec rails s -p 3000 -b '0.0.0.0' 17 tty: true 18 stdin_open: true 19 depends_on: 20 - db 21 ports: 22 - "3000:3000" 23 volumes: 24 - .:/myproject
試したこと
エラー内容よりbundle installができていないと判断しました。
様々な記事を参考にすると、「You must use Bundler 2 or greater with this lockfile.」のエラーは、 bundleのバージョンが2.Xであると、動かないという記事を多数見つけました。
記事を参考にし、Gemfile.lockを削除 or ファイルの中身を削除し、旧バージョンでインストールを試みましたが、Gemfile.lockが削除後すぐに復活し、コマンドの実行ができませんでした。
そもそもbundle installに問題があるという判断をしていることが正しいかの、判断もできていない状態です。
お忙しい中、恐れ入りますが解決にご協力いただきます様、よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
- Ruby : 2.5.1
- Rails : 5.2.4.2
- Bundler : 2.1.4
- mysql : 5.6.46
- Docker : 19.03.8
- docker-compose : 1.25.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/04 13:14
2020/04/04 13:20
2020/04/04 13:23
退会済みユーザー
2020/04/04 13:46
退会済みユーザー
2020/04/11 04:53