Bereitstellung einer Golang-App auf Heroku: Build ist erfolgreich, aber Anwendungsfehler
Erste Versuche, eine GoLang-Anwendung auf Heroku mithilfe der Godep-Unterstützung bereitzustellen, führten zu … ein erfolgreicher Build, aber ein „Anwendungsfehler“ beim Zugriff auf den Endpunkt der Anwendung. Um dieses Problem zu beheben, schauen wir uns das Problem und seine Lösung genauer an.
Problemübersicht:
Die bereitgestellte App reagiert nicht, wenn sie auf ihren Endpunkt zugreift (z. B. „/ '). Die Heroku-Protokolle zeigen einen Fehler an, der besagt, dass der Webprozess keine Bindung an $PORT herstellen konnte.
Lösung:
Heroku erfordert, dass Anwendungen ihre Webserver an den Port binden wird durch die Umgebungsvariable PORT angegeben. Allerdings startet der Anwendungscode derzeit den Server auf Port 9000.
Um dieses Problem zu beheben, sollte der Server der Anwendung auf dem von Heroku angegebenen PORT gestartet werden. So geht das:
import "os" func main() { // ... (your existing code) // Get the port from the PORT environment variable, or default to 9000 if not set port := os.Getenv("PORT") if port == "" { port = "9000" // Default port if not specified } // Start the server on the specified port err := grace.Serve(":" + port, context.ClearHandler(http.DefaultServeMux)) // ... (your existing code) }
Durch die Bindung an den richtigen Port tritt bei der Anwendung nicht mehr der Fehler „Boot-Timeout“ auf und sie kann Anfragen erfolgreich sowohl auf HTTP- als auch auf HTTPS-Ports über Heroku verarbeiten Gateways.
Das obige ist der detaillierte Inhalt vonWarum wird meine Go-App erfolgreich auf Heroku erstellt, schlägt jedoch mit einem „Anwendungsfehler' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!