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

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

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

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

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

1542閲覧

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

hajsu00

総合スコア151

Ruby on Rails

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

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿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

12022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/dsl.rb:81:in `_load_from'6c5949e2a4944d85995038e685540c71 22022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `block in load'6c5949e2a4944d85995038e685540c71 32022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `each'6c5949e2a4944d85995038e685540c71 42022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `load'6c5949e2a4944d85995038e685540c71 52022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/launcher.rb:59:in `initialize'6c5949e2a4944d85995038e685540c71 62022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/cli.rb:71:in `new'6c5949e2a4944d85995038e685540c71 72022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/lib/puma/cli.rb:71:in `initialize'6c5949e2a4944d85995038e685540c71 82022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/bin/puma:8:in `new'6c5949e2a4944d85995038e685540c71 92022-05-22 16:20:01from /usr/local/bundle/gems/puma-5.5.2/bin/puma:8:in `<top (required)>'6c5949e2a4944d85995038e685540c71 102022-05-22 16:20:01from /usr/local/bundle/bin/puma:23:in `load'6c5949e2a4944d85995038e685540c71 112022-05-22 16:20:01from /usr/local/bundle/bin/puma:23:in `<top (required)>'6c5949e2a4944d85995038e685540c71 122022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:63:in `load'6c5949e2a4944d85995038e685540c71 132022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:63:in `kernel_load'6c5949e2a4944d85995038e685540c71 142022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:28:in `run'6c5949e2a4944d85995038e685540c71 152022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:494:in `exec'6c5949e2a4944d85995038e685540c71 162022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'6c5949e2a4944d85995038e685540c71 172022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'6c5949e2a4944d85995038e685540c71 182022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'6c5949e2a4944d85995038e685540c71 192022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:30:in `dispatch'6c5949e2a4944d85995038e685540c71 202022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'6c5949e2a4944d85995038e685540c71 212022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:24:in `start'6c5949e2a4944d85995038e685540c71 222022-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 232022-05-22 16:20:01from /usr/local/lib/ruby/3.0.0/bundler/friendly_errors.rb:130:in `with_friendly_errors'6c5949e2a4944d85995038e685540c71 242022-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 252022-05-22 16:20:01from /usr/local/bin/bundle:23:in `load'6c5949e2a4944d85995038e685540c71 262022-05-22 16:20:01from /usr/local/bin/bundle:23:in `<main>'6c5949e2a4944d85995038e685540c71 272022-05-22 16:20:01bundler: failed to load command: puma (/usr/local/bundle/bin/puma)6c5949e2a4944d85995038e685540c71 282022-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 292022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/dsl.rb:81:in `_load_from'47faeba6373d4bd19c0c7f5db9a60ff7 302022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `block in load'47faeba6373d4bd19c0c7f5db9a60ff7 312022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `each'47faeba6373d4bd19c0c7f5db9a60ff7 322022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/configuration.rb:216:in `load'47faeba6373d4bd19c0c7f5db9a60ff7 332022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/launcher.rb:59:in `initialize'47faeba6373d4bd19c0c7f5db9a60ff7 342022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/cli.rb:71:in `new'47faeba6373d4bd19c0c7f5db9a60ff7 352022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/lib/puma/cli.rb:71:in `initialize'47faeba6373d4bd19c0c7f5db9a60ff7 362022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/bin/puma:8:in `new'47faeba6373d4bd19c0c7f5db9a60ff7 372022-05-22 16:19:58from /usr/local/bundle/gems/puma-5.5.2/bin/puma:8:in `<top (required)>'47faeba6373d4bd19c0c7f5db9a60ff7 382022-05-22 16:19:58from /usr/local/bundle/bin/puma:23:in `load'47faeba6373d4bd19c0c7f5db9a60ff7 392022-05-22 16:19:58from /usr/local/bundle/bin/puma:23:in `<top (required)>'47faeba6373d4bd19c0c7f5db9a60ff7 402022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:63:in `load'47faeba6373d4bd19c0c7f5db9a60ff7 412022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/cli/exec.rb:63:in `kernel_load'47faeba6373d4bd19c0c7f5db9a60ff7 42() 43/usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'47faeba6373d4bd19c0c7f5db9a60ff7 442022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'47faeba6373d4bd19c0c7f5db9a60ff7 452022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'47faeba6373d4bd19c0c7f5db9a60ff7 462022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:30:in `dispatch'47faeba6373d4bd19c0c7f5db9a60ff7 472022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'47faeba6373d4bd19c0c7f5db9a60ff7 482022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/cli.rb:24:in `start'47faeba6373d4bd19c0c7f5db9a60ff7 492022-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 502022-05-22 16:19:58from /usr/local/lib/ruby/3.0.0/bundler/friendly_errors.rb:130:in `with_friendly_errors'47faeba6373d4bd19c0c7f5db9a60ff7 512022-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 522022-05-22 16:19:58from /usr/local/bin/bundle:23:in `load'47faeba6373d4bd19c0c7f5db9a60ff7 532022-05-22 16:19:58from /usr/local/bin/bundle:23:in `<main>'47faeba6373d4bd19c0c7f5db9a60ff7 542022-05-22 16:19:58bundler: failed to load command: puma (/usr/local/bundle/bin/puma)47faeba6373d4bd19c0c7f5db9a60ff7 552022-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

1FROM ruby:3.0.1 2 3ENV RAILS_ENV=production 4RUN apt-get update -qq && apt-get install -y nodejs 5RUN mkdir -p /var/www/my_app 6RUN mkdir -p /var/www/my_app/tmp/sockets 7RUN mkdir -p /var/www/my_app/tmp/pids 8WORKDIR /var/www/my_app 9COPY /src/Gemfile /var/www/my_app/Gemfile 10COPY /src/Gemfile.lock /var/www/my_app/Gemfile.lock 11RUN bundle install 12RUN curl https://deb.nodesource.com/setup_16.x | bash 13RUN curl https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - 14RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list 15RUN apt-get update && apt-get install -y nodejs yarn 16 17COPY . /var/www/my_app 18 19# Add a script to be executed every time the container starts. 20COPY /src/entrypoint.sh /usr/bin/ 21RUN chmod +x /usr/bin/entrypoint.sh 22ENTRYPOINT ["entrypoint.sh"] 23 24RUN bundle exec rails assets:precompile 25 26# Start the main process. 27CMD bash -c "rm -f tmp/pids/server.pid && bundle exec puma -C config/puma.rb"

puma.rb

ruby

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

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

追記

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

1version: '3' 2 3services: 4 nginx: 5 container_name: my-app_nginx 6 build: 7 context: . 8 dockerfile: ./nginx/Dockerfile 9 ports: 10 - 80:80 11 volumes: 12 - ./src:/var/www/my_app 13 - ./nginx/hangartalk.conf:/etc/nginx/conf.d/my_app.conf 14 - ./nginx/nginx.conf:/etc/nginx/nginx.conf 15 tty: true 16 17 app: 18 container_name: my_app_app 19 build: 20 context: . 21 dockerfile: ./src/Dockerfile 22 command: bundle exec puma -e production 23 volumes: 24 - ./src:/var/www/my_app 25 - ./src/vendor/bundle:/var/www/my_app/vendor/bundle 26 environment: 27 TZ: 'Asia/Tokyo' 28 RAILS_ENV: production 29 ports: 30 - 3000:3000 31 depends_on: 32 - db 33 - nginx 34 tty: true 35 36 db: 37...

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

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

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

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

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

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の設定を混同していました。 ご指摘の通り、ボリュームマウントされているので開発環境ではたまたまうまくいっていたようです。 ベストアンサーにさせていただきたいと考えていますが、解答欄にご記入いただけますでしょうか。そのままの文面で結構です。
guest

回答1

0

ベストアンサー

大まかにはコメントのところに書いちゃいましたが、どうやらDockerfileのCOPYの箇所の指定パスが誤っていたのが原因だったようですね。
こういったケースではボリュームマウントをしているかどうかと、コンテナ単体で起動したときに中にソースが含まれているかなど確認してみてください。

投稿2022/05/24 02:17

yu_1985

総合スコア7427

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

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

hajsu00

2022/05/24 10:15

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問