ホームページ >バックエンド開発 >Golang >Heroku 上の Golang アプリでビルドが成功した後に「アプリケーション エラー」が表示されるのはなぜですか?

Heroku 上の Golang アプリでビルドが成功した後に「アプリケーション エラー」が表示されるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-08 01:33:12788ブラウズ

Why is my Golang app on Heroku showing an

heroku に golang アプリをデプロイ、ビルドは成功しましたが、アプリケーション エラーが発生しました

heroku に golang アプリケーションをデプロイするときは、アプリケーションが正しいポートにバインドされています。これを行わないと、アプリケーションの起動に失敗し、エンドポイントにアクセスするときに「アプリケーション エラー」メッセージが表示される可能性があります。

あなたの場合、ログには、アプリケーションが起動後 60 秒以内に強制終了されたことが示されています。 Web プロセスが指定されたポートにバインドできません。この問題を解決するには、$PORT 環境変数で指定されたポートに Web サーバーをバインドする必要があります。 Heroku は、この環境変数をデフォルトの HTTP および HTTPS ポートに自動的に設定し、アプリケーションがパブリックにアクセスできるようにします。

HTTP サーバーを予期されたポートにバインドするには、コードを次のように変更します。

import (
    "os"
    
    "github.com/gorilla/mux"
    "github.com/gorilla/context"

    "gopkg.in/paytm/grace.v1"

)

func main() {
    log.Println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ CHIT STARTED $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
    log.Println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
    
    muxRouter := mux.NewRouter()
    
    muxRouter.HandleFunc("/", Articles)
    http.Handle("/", muxRouter)
    
    port := os.Getenv("PORT")
    if port == "" {
        port = "9000" // Default port if not specified
    }
    err := grace.Serve(":" + port, context.ClearHandler(http.DefaultServeMux))
    if err != nil {
        log.Println("[ERROR GRACEFUL]", err)
        os.Exit(1)
    }
    
    os.Exit(0)
}

この変更を行うことで、アプリケーションは Heroku によって指定されたポートにバインドされ、デフォルトの HTTP および HTTPS ポートでパブリックにアクセスできるようになり、「アプリケーション エラー」が解決されます。問題です。

以上がHeroku 上の Golang アプリでビルドが成功した後に「アプリケーション エラー」が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。