前提・実現したいこと
HerokuにDockerを利用したRailsアプリをデプロイしようとしています。
現在コンテナイメージを作成しようとしています。
そこで発生した
ERROR: Service 'web' failed to build: The command '/bin/sh -c bundle install' returned a non-zero code:
のエラーを解決したい。
発生している問題・エラーメッセージ
コンテナイメージを作成するために
$ docker-compose build
を実行したところ
Step 7/18 : ADD Gemfile Gemfile ---> 526bd50449c9 Step 8/18 : ADD Gemfile.lock Gemfile.lock ---> 3b1cf9727edc Step 9/18 : RUN bundle install ---> Running in ef47b06cd714 /bin/sh: 1: bundle: not found ERROR: Service 'web' failed to build: The command '/bin/sh -c bundle install' returned a non-zero code: 127
と表示されました。
該当のソースコード
Dockerfile
1FROM ruby:2.5.1 2FROM jrottenberg/ffmpeg 3ENV LANG C.UTF-8 4RUN apt-get update -qq && apt-get install -y nodejs postgresql-client 5RUN mkdir /nagai_video 6WORKDIR /tmp 7ADD Gemfile Gemfile 8ADD Gemfile.lock Gemfile.lock 9RUN bundle install 10ENV APP_HOME /nagai_video 11RUN mkdir -p $APP_HOME 12WORKDIR $APP_HOME 13ADD . $APP_HOME 14 15# Add a script to be executed every time the container starts. 16COPY entrypoint.sh /usr/bin/ 17RUN chmod +x /usr/bin/entrypoint.sh 18ENTRYPOINT ["entrypoint.sh"] 19EXPOSE 3000 20 21# Start the main process. 22CMD ["rails", "server", "-b", "0.0.0.0"]
docker-compose.yml
version: '3' services: db: image: mysql:5.6.47 ports: - "4406:3306" restart: always environment: - MYSQL_DATABASE=nagai_video_db - MYSQL_ROOT_PASSWORD=password volumes: - ./data:/var/lib/mysql:rw command: --innodb_use_native_aio=0 web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/nagai_video ports: - "3002:3000" depends_on: - db environment: DB_HOST: db
database.yml(本番環境部分のみ)
production: <<: *default adapter: postgresql encoding: unicode pool: 5
試したこと
調べてみるとローカルとアプリでのbundlerのバージョンが違うことが原因の一つのようでした。
https://teratail.com/questions/253397
を参考にbundlerのバージョンを最新にし、gemfile.lockを削除してから再度bundle installしてdocker-compose buildを実行したがエラー内容は変わりませんでした。
実行結果は以下の通りです。
$ bundler version Bundler version 2.1.4 (2020-01-05 commit 32a4159325)
gemfile.lock
RUBY VERSION ruby 2.5.1p57 BUNDLED WITH 2.1.4
補足情報
ruby 2.5.1p57
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。