前提・実現したいこと
dockerでRuby on Railsのアプリケーションコンテナが起動しません。
発生している問題・エラーメッセージ
下記コマンド実行後、
bash
1docker-compose run web rails new . --force --no-deps --database=postgresql
最後に以下のエラーメッセージ
Could not find public_suffix-4.0.5 in any of the sources
が赤字で出ており、
bash
1docker ps -a
で確認するとアプリケーションコンテナは起動していない状態です。
(DBコンテナは起動しています)
また、マウントしているアプリ用ディレクトリにRailsのアプリケーションディレクトリやファイルができていません。
該当のソースコード
Dockercomposeyml
1version: '3' 2services: 3 db: 4 image: postgres 5 volumes: 6 - ./tmp/db:/var/lib/postgresql/data 7 environment: 8 POSTGRES_PASSWORD: (非表示) 9 web: 10 build: . 11 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 12 volumes: 13 - .:/myapp 14 ports: 15 - "3000:3000" 16 depends_on: 17 - db
Dockerfile
1FROM ruby:2.7 2RUN apt-get update -qq && apt-get install -y nodejs postgresql-client 3RUN mkdir /myapp 4WORKDIR /myapp 5COPY Gemfile /myapp/Gemfile 6COPY Gemfile.lock /myapp/Gemfile.lock 7RUN bundle install 8COPY . /myapp 9 10# Add a script to be executed every time the container starts. 11COPY entrypoint.sh /usr/bin/ 12RUN chmod +x /usr/bin/entrypoint.sh 13ENTRYPOINT ["entrypoint.sh"] 14EXPOSE 3000 15 16# Start the main process. 17 CMD ["rails", "server", "-b", "0.0.0.0"]
Gemfile
1source 'https://rubygems.org' 2gem 'rails', '~>5'
試したこと
自分で調べてみたところ、
https://rubygems.org/
にバージョンがないgemだと同じメッセージが出てくることがあるということでしたが
確認したところメッセージにある public_suffix-4.0.5 というのは最新版としてしっかりリソースに存在しているようでした。
補足情報(FW/ツールのバージョンなど)
環境
OS:windows 10 pro
docker構成:docker desktop(デーモン) + WSL1(コマンド)
参考手順
https://docs.docker.com/compose/rails/
使用している設定ファイルはほぼ↑と同じで、Rubyのバージョンだけ2.7にしたものです。
お手数ですがどなたかお知恵をお借りできると幸いです。
追記
y_shinodaさんに追記頂いた手順でやってみたのですが、
以下のようにcreate...のログが出ておりRails newできたように一見見えたものの、
実行後/myapp にマウントしているローカルディレクトリにはプロジェクトファイルができていませんでした。
(Gemfileも最初のものから書き換わっていません)
ディレクトリのマウントがうまくいっていないのかと思い、
停止したコンテナに入って/myapp 以下をls -la してみる、
プロジェクトファイルをいくつかfindしてみるなどで探してみてもプロジェクトファイルらしきものは見当たりませんでしたので、おそらくどこかでRails new が失敗しているのでしょうか?
ログを見てもエラーは見当たらない(見逃しているだけでしたら申し訳ありません)ようなので、
何が原因かまだ自力でたどり着けておりません…。
▼ログ
consolelog
1Successfully tagged (アプリ名)_web:latest 2WARNING: Image for service web was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`. 3 exist 4 create README.md 5 create Rakefile 6 create .ruby-version 7 create config.ru 8 create .gitignore 9 create Gemfile 10 run git init from "." 11Initialized empty Git repository in /myapp/.git/ 12 create package.json 13 create app 14 create app/assets/config/manifest.js 15 create app/assets/javascripts/application.js 16 (略) 17 append .gitignore 18/usr/local/bundle/gems/activesupport-5.2.4.3/lib/active_support/message_encryptor.rb:175: warning: Using the last argument 19as keyword parameters is deprecated; maybe ** should be added to the call 20/usr/local/bundle/gems/activesupport-5.2.4.3/lib/active_support/messages/metadata.rb:17: warning: The called method `wrap' 21is defined here 22 create config/boot.rb 23 create config/database.yml 24 create db 25 (略) 26 create storage 27 create storage/.keep 28 create tmp/storage 29 create tmp/storage/.keep 30 remove config/initializers/cors.rb 31 remove config/initializers/new_framework_defaults_5_2.rb 32 run bundle install 33The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`. 34Fetching gem metadata from https://rubygems.org/............ 35Fetching gem metadata from https://rubygems.org/. 36Resolving dependencies... 37Using rake 13.0.1 38Using concurrent-ruby 1.1.6 39Using i18n 1.8.3 40(略) 41Fetching uglifier 4.2.0 42Installing uglifier 4.2.0 43Fetching web-console 3.7.0 44Installing web-console 3.7.0 45Bundle complete! 18 Gemfile dependencies, 78 gems now installed. 46Use `bundle info [gemname]` to see where a bundled gem is installed. 47Post-install message from chromedriver-helper: 48 49 +--------------------------------------------------------------------+ 50 | | 51 | NOTICE: chromedriver-helper is deprecated after 2019-03-31. | 52 | | 53 | Please update to use the 'webdrivers' gem instead. | 54 | See https://github.com/flavorjones/chromedriver-helper/issues/83 | 55 | | 56 +--------------------------------------------------------------------+ 57 58Post-install message from sass: 59 60Ruby Sass has reached end-of-life and should no longer be used. 61 62* If you use Sass as a command-line tool, we recommend using Dart Sass, the new 63 primary implementation: https://sass-lang.com/install 64 65* If you use Sass as a plug-in for a Ruby web framework, we recommend using the 66 sassc gem: https://github.com/sass/sassc-ruby#readme 67 68* For more details, please refer to the Sass blog: 69 https://sass-lang.com/blog/posts/7828841 70 71 run bundle exec spring binstub --all 72* bin/rake: Spring inserted 73* bin/rails: Spring inserted
[2020/7/17 追記]
解決しました!
- 最初のエラーは docker-compose down 後に解決
- Rails newが通ったのにファイルが生成されていない問題は、WSL環境だとDocker-compose.ymlでのvolume設定でローカルディレクトリを指定するとき相対パスが使えないことに原因があったようです。絶対パスで修正したらファイル生成ができました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/13 13:05
2020/07/13 13:28
2020/07/15 12:43
2020/07/15 15:34 編集
2020/07/24 07:28