>백엔드 개발 >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초 이내에 종료되는 것으로 나타납니다. 웹 프로세스가 지정된 포트에 바인딩할 수 없습니다. 이 문제를 해결하려면 웹 서버를 $PORT 환경 변수에 지정된 포트에 바인딩해야 합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.