Help us understand the problem. What is going on with this article?

【Heroku】デプロイ後にcode=H14 desc="No web processes running"

事象

話の流れとしてはこの記事の続きになります。

Dockerで開発環境構築をしたRailsアプリのコンテナをpushすることができたのですが、その後

$ heroku addons:create heroku-postgresql:hobby-dev

$ heroku container:release "コンテナ名"

$ heroku open

として、サイトを開いてみると、

スクリーンショット 2019-09-24 7.44.05.png

と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を見てみると、

スクリーンショット 2019-10-26 13.04.19.png

と表示されていました。

どうやら、heroku.ymlが含まれていないことが原因の模様で、解決するにはheroku.ymlを作成するか、heroku stack:set heroku-18を実行する必要があるとのこと。

そこでまずはheroku.ymlを作成する方針をとってみました。

Buildlogに記載されていた公式ドキュメントを参考に下記のシンプルなheroku.ymlを作成しました。

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

としてマイグレーションを実行したところ、とうとうお馴染みの画面がお出迎えしてくれました。

スクリーンショット 2019-10-26 13.17.10.png

原因

公式ドキュメントによると、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

rebi
エンジニア2年生/サーバーサイドエンジニア /SpringBoot, DDD
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away