質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1102閲覧

既存のrailsアプリをdocker化したい

kobaryo04ysh

総合スコア29

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/03/20 15:17

前提・実現したいこと

自作したrailsアプリ(Docker開発環境を利用してない)のつづきをdocker環境下で開発したく、手始めにrailsチュートリアルの完成した物を使ってやってみようと、Railsチュートリアルの開発環境を Docker にしてみなイカ?を参考に進めていた際に、docker-compose buildで以下のエラーが発生しました。

発生している問題・エラーメッセージ

ERROR: Service 'app' failed to build: The command '/bin/sh -c bundle install --jobs=4' returned a non-zero code: 20

該当のソースコード

Dockerに関する知識が非常に乏しいことから、上記の記事のコードをそのまま利用させていただいています。

Dockerfile

1FROM ruby:2.4.9-alpine3.11 2 3ENV LANG C.UTF-8 \ 4 TZ Asia/Tokyo 5 6ENV BUILD_PACKAGES="build-base" \ 7 DB_PACKAGES="sqlite-dev postgresql-dev" \ 8 RAILS_PACKAGES="tzdata nodejs imagemagick" \ 9 FAVORITE_PACKAGES="less" 10 11RUN apk update && \ 12 apk upgrade && \ 13 apk --update --no-cache add \ 14 ${BUILD_PACKAGES} \ 15 ${DB_PACKAGES} \ 16 ${RAILS_PACKAGES} \ 17 ${FAVORITE_PACKAGES} 18 19WORKDIR /app 20 21COPY Gemfile \ 22 Gemfile.lock \ 23 /app/ 24 25RUN bundle install --jobs=4 26 27# 下記のコードは、頻繁に Gemfile を変更する場合、コメントアウトを推奨します。 28# RUN apk del ${BUILD_PACKAGES} 29 30# https://github.com/bundler/bundler/issues/6154 31ENV BUNDLE_GEMFILE='/app/Gemfile'

dockercomposeyml

1version: '3' 2services: 3 app: 4 build: 5 context: . 6 dockerfile: ./docker/Dockerfile 7 ports: 8 - 3000:3000 9 command: bundle exec rails s -p 3000 -b 0.0.0.0 10 volumes: 11 - ./:/app:cached 12 stdin_open: true 13 tty: true 14

試したこと

以下のエラーログを見て、bundle install実行時にエラーが起きてそうな雰囲気を感じたので、

Step 7/8 : RUN bundle install --jobs=4 ---> Running in d6a7aa5bd1f7 You must use Bundler 2 or greater with this lockfile. ERROR: Service 'app' failed to build: The command '/bin/sh -c bundle install --jobs=4' returned a non-zero code: 20

多分意味ないだろうなとは思いつつも、bundle installをやって見たり、Dockerfileの

RUN bundle install --jobs=4

RUN /bin/sh -c bundle install --jobs=4

に変更したりしましたが、エラーは同様でした。

ググってもなかなか情報が得られなかったので、質問させていただきました。

補足情報(FW/ツールのバージョンなど)

ruby 2.5.0
rails 6.0.0
docker 19.03.8
docker-compose 1.25.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーメッセージに

You must use Bundler 2 or greater with this lockfile.

と出てますので、Gemfile.lock の最後を確認しましょう。たぶん Gemfile.lock が bundler 2.x で作られているのに、docker image の中の bundler は 1.x なのでしょう。

BUNDLED WITH 2.x.x

Dockefile の中で Bundler を更新してあげれば良いのでは。

Dockerfile

1RUN gem install bundler && bundle install --jobs=4

投稿2020/03/20 19:14

hoshi-takanori

総合スコア7901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobaryo04ysh

2020/03/21 05:55

ありがとうございます!! その後、紆余曲折ありましたが、無事にできました!!
kobaryo04ysh

2020/03/21 07:01

すみません。できれば教えていただきたいことがあるのですが、DockerfileにてRUNの部分でapkコマンドを用いていますが、これはalpine環境下だから使える物と認識しています。既存のアプリにてbuildする関係で、今からrubyのバージョンを変えるのはなかなか厳しいところがあります。そこでDockerfileのapkコマンドをapt-getに変えてみたのですが使えず、、、 ruby2.5.0環境下で使えるコマンドはあるのでしょうか? ちなみに上の質問で成功したのはrubyのバージョンを2.5.7alpineにしてです。
hoshi-takanori

2020/03/21 08:06 編集

現在 docker を使わずに ruby 2.5.0 で開発しているアプリがあって、それを docker に載せたい、その際に参考にしているものが ruby 2.4.9 を使った手順だったが、これを ruby 2.5.0 にしたい、ということでしょうか。docker の ruby イメージは以下のページに各種ありますが、ruby 2.5 系は 2.5.7 になっちゃってますね。たぶん、2.5.7 でも 2.5.0 と機能的には同じはず(API 互換性を維持するセキュリティフィックスやバグフィックスのみ)なので、ruby:2.5.7-alpine3.11 を使えばいいのではないかと思います。 https://hub.docker.com/_/ruby ruby のバージョン番号の見方はこちら。 https://www.ruby-lang.org/ja/news/2013/12/21/ruby-version-policy-changes-with-2-1-0/
kobaryo04ysh

2020/03/21 08:54

そういうことです!質問が下手ですみませんでした。。 2.5.7環境に変え(Dockerfile、gemfile、rbenvで2.5.7に変える)再びdocker-compose buildを実行すると、 Retrying `git clone 'https://github.com/refile/refile-mini_magick.git' "/usr/local/bundle/cache/bundler/git/refile-mini_magick-96c97bc92fb018adc7c3d2eff1ad89893080cb03" --bare --no-hardlinks --quiet` due to error (4/4): Bundler::Source::Git::GitCommandError Git error: command `git clone 'https://github.com/refile/refile-mini_magick.git' "/usr/local/bundle/cache/bundler/git/refile-mini_magick-96c97bc92fb018adc7c3d2eff1ad89893080cb03" --bare --no-hardlinks --quiet` in directory /app has failed. のようなエラーを吐かれたのですが、これってどういうことかわかりますか。Gemfile.lockの問題でしょうか 何度もすみません。
hoshi-takanori

2020/03/21 16:51

うーん、わかりません。grep refile-mini_magick Gemfile.lock したら何が出ますか?
kobaryo04ysh

2020/03/21 17:01

せっかくご回答いただいたのですが、自己解決しました。 おそらく、パッケージの依存関係だったっぽいです。 Homebrewでいろいろインストールしたらできました。 本当にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問