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

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

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

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

解決済

AWS ECS(Fargate)へのRails + Nginxデプロイで"bundler: failed to load command: puma"が解決できない

hajsu00
hajsu00

総合スコア117

Ruby on Rails

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1回答

0評価

0クリップ

184閲覧

投稿2022/05/22 07:46

編集2022/05/24 19:15

AWS ECS(Fargate)へRails + Nginxといういう構成でデプロイを試みています。
RailsとNginxそれぞれについてECRのリポジトリ作成とプッシュを完了し、タスク定義を作成してタスクを実行したのですが、bundler: failed to load command: pumaのエラーを吐いてステータスがSTOPPEDになってしまいます。

ご助言をいただけないでしょうか。

前提事項

  • ruby 3.0.1
  • Rails 6.1.4.4
  • puma 5.5.2
  • nginx 1.21.6

ローカルにdevelopment環境でコンテナを立ち上げたところ、正常にbundle exec puma -C config/puma.rbが動作してRailsが起動しました。

実現したい事

AWS ECS(Fargate)へRails + Nginxといういう構成でデプロイし、Rails(puma)が起動することをECSのタスクログで確認したい。

起きている問題

ECSのタスク上では、次のエラーが出ています。

bash

2022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/dsl.rb:81:in `_load_from'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `block in load'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `each'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `load'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/launcher.rb:59:in `initialize'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/cli.rb:71:in `new'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/cli.rb:71:in `initialize'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/bin/puma:8:in `new'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/bin/puma:8:in `<top (required)>'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/bin/puma:23:in `load'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bundle/bin/puma:23:in `<top (required)>'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:63:in `load'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:63:in `kernel_load'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:28:in `run'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:494:in `exec'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:30:in `dispatch'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:24:in `start'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.2.15/libexec/bundle:49:in `block in <top (required)>'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/friendly_errors.rb:130:in `with_friendly_errors'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.2.15/libexec/bundle:37:in `<top (required)>'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bin/bundle:23:in `load'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01from /usr/local/bin/bundle:23:in `<main>'6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01bundler: failed to load command: puma (/usr/local/bundle/bin/puma)6c5949e2a4944d85995038e685540c71 2022-05-22 16:20:01/usr/local/bundle/gems/puma-5.5.2/lib/puma/dsl.rb:81:in `read': No such file or directory @ rb_sysopen - config/puma.rb (Errno::ENOENT)6c5949e2a4944d85995038e685540c71 2022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/dsl.rb:81:in `_load_from'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `block in load'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `each'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `load'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/launcher.rb:59:in `initialize'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/cli.rb:71:in `new'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/cli.rb:71:in `initialize'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/bin/puma:8:in `new'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/bin/puma:8:in `<top (required)>'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/bin/puma:23:in `load'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bundle/bin/puma:23:in `<top (required)>'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:63:in `load'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:63:in `kernel_load'47faeba6373d4bd19c0c7f5db9a60ff7 () /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:30:in `dispatch'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:24:in `start'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.2.15/libexec/bundle:49:in `block in <top (required)>'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/friendly_errors.rb:130:in `with_friendly_errors'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.2.15/libexec/bundle:37:in `<top (required)>'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bin/bundle:23:in `load'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58from /usr/local/bin/bundle:23:in `<main>'47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58bundler: failed to load command: puma (/usr/local/bundle/bin/puma)47faeba6373d4bd19c0c7f5db9a60ff7 2022-05-22 16:19:58/usr/local/bundle/gems/puma-5.5.2/lib/puma/dsl.rb:81:in `read': No such file or directory @ rb_sysopen - config/puma.rb (Errno::ENOENT)47faeba6373d4bd19c0c7f5db9a60ff7

関係するコード

Dockerfile(Rails)

Dockerfile

FROM ruby:3.0.1 ENV RAILS_ENV=production RUN apt-get update -qq && apt-get install -y nodejs RUN mkdir -p /var/www/my_app RUN mkdir -p /var/www/my_app/tmp/sockets RUN mkdir -p /var/www/my_app/tmp/pids WORKDIR /var/www/my_app COPY /src/Gemfile /var/www/my_app/Gemfile COPY /src/Gemfile.lock /var/www/my_app/Gemfile.lock RUN bundle install RUN curl https://deb.nodesource.com/setup_16.x | bash RUN curl https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update && apt-get install -y nodejs yarn COPY . /var/www/my_app # Add a script to be executed every time the container starts. COPY /src/entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] RUN bundle exec rails assets:precompile # Start the main process. CMD bash -c "rm -f tmp/pids/server.pid && bundle exec puma -C config/puma.rb"

puma.rb

ruby

# /Users/t_kyab/Documents/project/my_app/src/config/puma.rb (ローカル) # /var/www/my_app/config/puma.rb (コンテナ上) workers Integer(ENV['WEB_CONCURRENCY'] || 2) max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } threads min_threads_count, max_threads_count preload_app! environment ENV.fetch("RAILS_ENV") { "development" } bind "unix:////var/www/my_app/tmp/sockets/puma.sock" pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } plugin :tmp_restart on_worker_boot do ActiveRecord::Base.establish_connection end

解決へのヒントをいただけると幸いです。

追記

dockerの構築にはdocker-compose.ymlを使用しています。
また、本番環境でのpuma設定ファイルの場所が間違っており、新たに
my_app/config/puma/production.rb
を作成し(内容はpuma.rbとおなじ)、
$ bundle exec puma -e production
コマンドで呼び出すようにしました。これで、本番環境でのパス指定なしで上記のproduction.rbを読みにいくと理解していますが、今度は
ERROR: No application configured, nothing to run
が出て詰まっています。
後ほど情報を整理し直し、新たな質問を立てさせていただくことを考えています。

docker-compose.yml

yml

version: '3' services: nginx: container_name: my-app_nginx build: context: . dockerfile: ./nginx/Dockerfile ports: - 80:80 volumes: - ./src:/var/www/my_app - ./nginx/hangartalk.conf:/etc/nginx/conf.d/my_app.conf - ./nginx/nginx.conf:/etc/nginx/nginx.conf tty: true app: container_name: my_app_app build: context: . dockerfile: ./src/Dockerfile command: bundle exec puma -e production volumes: - ./src:/var/www/my_app - ./src/vendor/bundle:/var/www/my_app/vendor/bundle environment: TZ: 'Asia/Tokyo' RAILS_ENV: production ports: - 3000:3000 depends_on: - db - nginx tty: true db: ...

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

mike2mike4

2022/05/22 08:45

「config/puma.rb」配下に該当のファイルがないと書いてますが。相対パスがわからないのら絶対パスで書いてみたらいかがでしょうか?
yu_1985

2022/05/22 16:04

ECSのタスク定義はどんな感じになっていますか また、ローカルではそのDockerfileをどうやって起動しているのでしょう
hajsu00

2022/05/22 21:59

ご回答ありがとうございます。 本番環境でのpuma設定ファイルの場所が間違っており、新たに my_app/config/puma/production.rb を作成し(内容はpuma.rbとおなじ)、 $ bundle exec puma -e production コマンドで呼び出すようにしました。これで、本番環境でのパス指定なしで上記のproduction.rbを読みにいくと理解していますが、今度は ERROR: No application configured, nothing to run が出て詰まっています。
hajsu00

2022/05/22 22:02

ECSのタスク定義については帰宅後に確認して追記させていただきます。 またDockerの起動についてはdocker-ompose.ymlを使用していますので、本文に追記させていただきました。
yu_1985

2022/05/23 04:35

COPY /src/Gemfile /var/www/my_app/Gemfile 例えばここのところもそうなのですが、ローカルではルートディレクトリ配下に/srcというディレクトリを作ってそこにGemfileを置いているんでしょうか? プロジェクトのディレクトリ内の指定ではなくて大丈夫ですか? ボリュームマウントをしないでpumaが入っているイメージを単体でコンテナとして起動して、bashで中身を覗いてみてちゃんと想定通りにソース類が配置されているか確認してみては? docker-composeの設定ではボリュームマウントしてるのでうまくいっているだけな可能性があります。
hajsu00

2022/05/23 11:56

まさにおっしゃる通りで、DockerfileのCOPYパスを修正して単独で起動しECSにプッシュしたところ、正常にPumaコマンドが実行できました。ありがとうございます! Docker-composeとDockerfileの設定を混同していました。 ご指摘の通り、ボリュームマウントされているので開発環境ではたまたまうまくいっていたようです。 ベストアンサーにさせていただきたいと考えていますが、解答欄にご記入いただけますでしょうか。そのままの文面で結構です。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。