Dockerで環境構築している際に連続して起こったエラーをなんとか解決しました。
Dockerの環境構築で起きたエラーでつまづいている人には何かしら役に立つかもしれないと思ったのでQiitaに投稿させていただきました。
####開発環境
・Mac OS
・Ruby2.6.3
・Rails5.2.3
・MySQL5.7
##起こったこと
この記事をもとにDockerの環境構築をしていたのですが、
新規Railsプロジェクトの作成で詰まってしまいました。
最初のエラー
docker-compose run web rails new . --force --database=mysql --skip-bundle
を打つと以下のエラーが起きます。
/usr/local/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': Could not find 'bundler' (2.2.27) required by your /app_name/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.2.27`
from /usr/local/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'
from /usr/local/bin/bundle:23:in `<main>'
次にエラー文で指示されたコマンド
bundle update --bundler
を打ちました。
-結果
The Gemfile specifies no dependencies
Bundle updated!
Gemファイルに依存関係はないとかなんか言ってるけど、Bundleがアップデートされたとことだしもう一度下記のコマンドを打ったところ、また先程のエラーが出てきてしまいました。
docker-compose run web rails new . --force --database=mysql --skip-bundle
次にbundle update --bundler
を打った後の
The Gemfile specifies no dependencies
と
`activate_bin_path'
が怪しいなと思いググってみると
RubyGemsとBundler2系が相性が悪く、Bundle1系に変えるとエラーが解消されるという記事を見つけたので
gem install bundler -v '1.17.3'
docker-compose run web rails new . --force --database=mysql --skip-bundle
を実行すると、エラー文が変わりました
Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "rails": executable file not found in $PATH: unknown
ERROR: 1
runの前にexecを指定してコマンドを打つと
docker-compose exec run web rails new . --force -d mysql --skip-bundle
成功しました。しかし、。
第二のエラー発生
rails newできたしローカルホストでサーバーに接続するために
docker-compose up -d
を実行した状態で新しいターミナルを開いて
docker-compose exec run web rails db:create
を打つとlocalhostサーバーが立ち上がるみたいだったのですが、うまくいきませんでした。
解決方法
どうやら、docker-compose up -d
の前に
docker-compose build
を実行しないといけないみたいでした。