
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...


回答1件
あなたの回答
tips
プレビュー