😎

Herokuでデプロイした時に起きたApplication error【code=H10 desc="App crashed"】の解決方法

2022/10/05に公開約2,600字

Application errorの解決方法

Railsのアプリにデプロイ成功したものの、アクセスしてみると以下のエラーが発生しました。

結論としてはProcfileを削除することで上記のエラーは解決しました。

エラーの詳細

生じたエラーの内容は以下の通りです。

at=error code=H10 desc="App crashed" method=GET path="/" 
host=wonderful-editor-1.herokuapp.com request_id=e20befec-275f-4f48-b103-524c50b93d39 
fwd="27.141.50.144" dyno= connect= service= status=503 bytes= protocol=https

公式ドキュメントには以下の内容が記載されています。

さすがにこれだけではエラーの詳細をつかめないので、以下のことを試しました。
1.partialを導入 参考記事(私の場合クレジットカードの情報登録が必要でした。)
2.heroku logs --tail でログを確認

そしてエラーを確認すると以下の内容が表示されました。

2022-09-27T04:54:40.168345+00:00 app[web.1]: * Min threads: 5, max threads: 5
2022-09-27T04:54:40.168345+00:00 app[web.1]: * Environment: production
2022-09-27T04:54:40.168639+00:00 app[web.1]: * Listening on tcp://0.0.0.0:3000
2022-09-27T04:54:40.168976+00:00 app[web.1]: Use Ctrl-C to stop
2022-09-27T04:55:35.045179+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2022-09-27T04:55:35.087622+00:00 heroku[web.1]: Stopping process with SIGKILL
2022-09-27T04:55:35.248704+00:00 heroku[web.1]: Process exited with status 137
2022-09-27T04:55:35.303301+00:00 heroku[web.1]: State changed from starting to crashed

Error R10 (Boot timeout)のエラー内容が公式ドキュメントに記載されています。

※ dynoとはアプリを公開するためのLinuxコンテナです。

上記の内容からWeb process failed to bind to $PORTのメッセージが怪しそうです。PORTへの接続が失敗ということなので Procfile を確認してみました。

Procfileを削除でエラー解決

Procfile の記述は以下の通りです。

web: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
webpacker: ./bin/webpack-dev-server

Procfile にエラーの原因があることは何となく理解できるものの、どのように解決すべきか全く検討がつきませんでした。
解決方法をググるとこちらの記事にエラー解決できそうな記述がありました。

Procfileを作成した理由は gem foreman を導入するためです。
ですが、 foreman を使う機会もほとんどありません。ということでProcfileを削除して再度試してみます。

無事に公開されました🎉
調査するのに時間かかりましたが、初のアプリ公開ということ非常に嬉しい気持ちになりました!
もし同じエラーに苦しんでいる方がいれば参考にしてください。

Discussion

ログインするとコメントできます