Herokuへデプロイ後にエラー「code=H14 desc=”No web processes running”」
エラー内容
Docker環境のRailsアプリをHerokuにプッシュして、Herokuを開いてみたところ、うまく表示されていませんでした。ログを確認したところ以下のようなエラーが発生していました。
コード
2022-01-12T11:22:44.331526+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=shielded-plains-89486.herokuapp.com request_id=77cda585-04a7-47e7-bcdb-9ac04d4ce2cb fwd="165.76.248.90" dyno= connect= service= status=503 bytes= protocol=https
解決方法
結論から言うと、コンテナにheroku.ymlが含まれていないことが原因です。私はコンテナイメージをpushする方法でHerokuにアプリをアップしていました。
なので以下の方針で進めます。
- heroku.ymlを作成する
$ heroku stack:set container
を実行$ git push heroku master
を実行$ heroku ps:scale web=1
を実行$ heroku run rails db:migrate
などを実行(必要であれば)$ heroku open
を実行
heroku.ymlの内容は以下のようにシンプルなものです。
heroku.yml
build:
docker:
web: Dockerfile
👇のリンクを参考にさせていただきました。
https://qiita.com/rebi/items/efd1c36f0a9e46222d80
ターミナル
以下、実際のコマンドと挙動についてですので、参考にしてみてください。
コード
$ touch heroku.yml
$ ls
Dockerfile README.md bin db heroku.yml public tmp
Gemfile Rakefile config docker-compose.yml lib spec vendor
Gemfile.lock app config.ru entrypoint.sh log storage
$ git status
On branch fix_heroku
Untracked files:
(use "git add ..." to include in what will be committed)
heroku.yml
nothing added to commit but untracked files present (use "git add" to track)
$ git add -A
$ git commit -m 'heroku.ymlの追加'
[fix_heroku 34d00aa] heroku.ymlの追加
1 file changed, 3 insertions(+)
create mode 100644 heroku.yml
$ heroku stack:set container
Setting stack to container... done
$ git push heroku fix_heroku:master
Enumerating objects: 197, done.
Counting objects: 100% (197/197), done.
Delta compression using up to 8 threads
Compressing objects: 100% (169/169), done.
Writing objects: 100% (197/197), 42.08 KiB | 2.34 MiB/s, done.
Total 197 (delta 50), reused 0 (delta 0), pack-reused 0
【省略】
remote: latest: digest: sha256:70e45578127488c78b416d518600e94555c123916769b118954ffcc39ea7f95a size: 3672
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/shielded-plains-89486.git
* [new branch] fix_heroku -> master
$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:Free
$ heroku open