1
0

More than 1 year has passed since last update.

【解決】Dockerを使用した環境でrails newできない

Last updated at Posted at 2021-09-26

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

を実行しないといけないみたいでした。

1
0
0

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
1
0