事象
話の流れとしてはこの記事の続きになります。
Dockerで開発環境構築をしたRailsアプリのコンテナをpushすることができたのですが、その後
$ heroku addons:create heroku-postgresql:hobby-dev
$ heroku container:release "コンテナ名"
$ heroku open
として、サイトを開いてみると、
とHerokuのエラーが発生していました。
解決方法
まず、画面に書かれている通り、コンソール上でheroku logs --tail
を実行してみたところ
$ heroku logs --tail
2019-09-10T22:53:00.595256+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=safe-basin-05606.herokuapp.com request_id=e797e1d4-8327-4285-b525-986ed50ea467 fwd="160.237.76.19" dyno= connect= service= status=503 bytes= protocol=https
2019-09-10T22:53:01.484857+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=safe-basin-05606.herokuapp.com request_id=f8c9be65-f445-4b0d-a4fa-83b27c76762f fwd="160.237.76.19" dyno= connect= service= status=503 bytes= protocol=https
と出力されました。
ログによるとcode=H14 desc="No web processes running"
が発生しているようなので、この文言で検索してみると、こちらの公式ドキュメントを発見。
公式ドキュメントによると、heroku ps:scale web=1
を叩けとのことなので、叩いてみると、
$ heroku ps:scale web=1
› Warning: heroku update available from 7.26.2 to 7.29.0.
Scaling dynos... !
▸ Couldn't find that process type (web).
と出力され、失敗してしまいました。
改めて、Web上でherokuのBuildlogを見てみると、
と表示されていました。
どうやら、heroku.ymlが含まれていないことが原因の模様で、解決するにはheroku.ymlを作成するか、heroku stack:set heroku-18
を実行する必要があるとのこと。
そこでまずはheroku.ymlを作成する方針をとってみました。
Buildlogに記載されていた公式ドキュメントを参考に下記のシンプルなheroku.ymlを作成しました。
build:
docker:
web: Dockerfile
その後
$ heroku stack:set container
$ git push heroku master
を実行し、再度heroku ps:scale web=1
を実行してみると、
$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:Free
となり成功しました。
改めてURLにアクセスしてみると、Herokuに関するエラーは消え、Railsにおいて、DBが見つからないエラーが発生していたので、公式サイト
を参考に
$ heroku run rake db:migrate
としてマイグレーションを実行したところ、とうとうお馴染みの画面がお出迎えしてくれました。
原因
公式ドキュメントによると、webサイトに対してdynos
が割り当てられていないのが原因で、H14が発生してしまう模様で、それを割り当てるためのコマンドがheroku ps:scale web=1
です。
ちなみにdynos
とは、dyno
の複数形で、公式のdyno
解説記事によると、Herokuで使用されるコンテナのことをdyno
と呼んでいるそうです。
ただ、heroku.yml
を作成するまで、heroku ps:scale web=1
が成功しなかった理由は今の所わかっていません。ご存知の方がいれば、ご教示いただきますと幸いです。
また、heroku.yml
を作成せず、Buildlogに記載されていた、heroku stack:set heroku-18
を実行したらどうなっていたかというのも気になりますので、同じ症状に出会い試された方がいれば、ご教示いただけますと幸いです。
まとめ
Herokuデプロイ後にcode=H14 desc="No web processes running"
が発生したら、
heroku ps:scale web=1
を試してみてください。
このコマンドが成功しない場合は、heroku.yml
を作成した後で再度試してみてください。
この記事が少しでも誰かのお役に立てれば幸いです。
最後までお読みいただきありがとうございました。
参考文献
公式ドキュメント
Heroku Error Codes
https://devcenter.heroku.com/articles/error-codes#h14-no-web-dynos-running
Building Docker Images with heroku.yml
https://devcenter.heroku.com/articles/build-docker-images-heroku-yml#getting-started
Getting Started on Heroku with Rails 5.x
https://devcenter.heroku.com/articles/getting-started-with-rails5#migrate-your-database
dyno:Heroku プラットフォームの中核
https://jp.heroku.com/dynos