デプロイしてみたアプリと経緯
以下のチュートリアルで作成したginを使用したアプリ go.dev
以下のように gin のリリースモードになるようにしてデプロイした。
gin.SetMode(gin.ReleaseMode)
調査
ログを見てみる。
heroku logs --tail
ログの一部を抜粋。
2022-03-03T10:18:31.003824+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 2022-03-03T10:18:31.169027+00:00 heroku[web.1]: Stopping process with SIGKILL 2022-03-03T10:18:31.329697+00:00 heroku[web.1]: Process exited with status 137
原因
Herokuはポートを割り当てるらしい。対策としてはHerokuが追加した環境変数からポート番号を取得する必要がある。
修正
ポートを環境変数から取得するように修正
port := os.Getenv("PORT") router.Run(":" + port)
動作確認
うまくいった
curl heroku_url/albums | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 383 100 383 0 0 443 0 --:--:-- --:--:-- --:--:-- 447
[
{
"id": "1",
"title": "Blue Train",
"artist": "John Coltrance",
"price": 56.99
},
{
"id": "2",
"title": "Jeru",
"artist": "John Coltrance",
"price": 17.99
},
{
"id": "3",
"title": "Sarah Vaughan and Clifford Brown",
"artist": "Sarah Vaughan",
"price": 39.99
}
]