Frage:
Bereitstellen einer GoLang-App auf Heroku Mit der GoDep-Unterstützung ist der Build erfolgreich, aber beim Zugriff auf den Endpunkt wird ein „Anwendungsfehler“ zurückgegeben. Die App läuft auf Port 9000 auf localhost, aber Grace.Serve scheint auf einem anderen Port zu lauschen.
Heroku-Protokollausgabe:
2019-07-08T05:03:48.131507+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Anwendung Code:
err := grace.Serve(":9000", context.ClearHandler(http.DefaultServeMux))
Antwort:
Das Problem besteht darin, dass die Anwendung ihren Webserver explizit an Port 9000 bindet, was zu einem Konflikt mit dem von Herokus zugewiesenen Port führt. Heroku weist einen dynamischen Port über die Umgebungsvariable PORT zu.
Um dieses Problem zu beheben, sollte die Anwendung den Port dynamisch basierend auf der Umgebungsvariablen PORT zuweisen, anstatt Port 9000 fest zu codieren.
Überarbeitet Anwendungscode:
port := os.Getenv("PORT") if port == "" { port = "9000" // Default port if not specified } err := grace.Serve(":" + port, context.ClearHandler(http.DefaultServeMux))
Das obige ist der detaillierte Inhalt vonWarum gibt meine GoLang Heroku-App trotz erfolgreicher Erstellung einen „Anwendungsfehler' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!