はじめに
Herokuでコンテナデプロイを試していたときにハマったので共有します。
コンテナデプロイについては、以下にまとめました。
事象
「デプロイ出来た^^」と意気揚々と heroku open
したところ、以下のエラーページに遭遇しました。
ログを確認した所、以下のメッセージが見つかりました。
terminal
$ heroku logs --tail
...(省略)
2021-07-22T01:48:54.026828+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
...(省略)
解決方法
調べてみたところ、Herokuではポート番号が動的に生成されるため環境変数から取得する必要があるとのこと。
ポート番号を環境変数から取得する処理を追加しました。
今回の例はGoですが、別言語の場合は読み替えてください。
port := os.Getenv("PORT")
if port == "" {
port = "8000"
}
getting-startedを見ても、環境変数から取得していました。
go-getting-started/main.go at main · heroku/go-getting-started
これで無事デプロイが成功しました。
参考
HerokuでNode.jsアプリを実行する際のポート番号について | プログラマーになった 「中卒」 男のブログ
Goで作ったアプリケーションをHerokuで動かす - Qiita
go-getting-started/main.go at main · heroku/go-getting-started