我的 Go 服务器无法在 Cloud Foundry 中启动

我有一个简单的 GO 服务器,我试图将它推送到 Bosh lite(Vagrant + Virtual box)上的云代工厂。

这是我的 go 应用程序的源代码设置:

  • ~/workspace/src/github.com/me/(父目录)

    -Godeps

    -weight weight.go <-- 主文件。

    清单文件.yml

    配置文件

我的 weight.go 是一个简单的服务器,可以监听 9000。

1) manifest.yml 看起来像这样。

applications:

- name: weight

  memory: 128MB

  instances: 1

2 ) Procfile 看起来像这样。


worker: bin/weight

3)我使用默认的buildpack。


4 ) 当我用 cf push weight -c "./bin/weight;sleep 1d" 推送我的应用程序时,我得到:

我试过设置


cf set-env weight PORT 9000

没有成功,我是不是在用 manifest 和 yaml 做一些时髦的事情?


weight.go 在本地运行。


代码 :


func main (){

    http.HandleFunc("/weight", weightHandler)

    err:=http.ListenAndServe("localhost:"+getPort(), nil)

    if err != nil {

        fmt.Println("got an err ")

        log.Fatalln(err)

    }else{

        fmt.Println("Apparently it works ?")

    }

    //fmt.Println("Hi")

    //time.Sleep(1*time.Hour)

}


func getPort() string {

    var port string

    if port = os.Getenv("PORT"); len(port) == 0 {

        fmt.Println("Didn't Found it")

        fmt.Println(port)

        port = DEFAULT_PORT

    }else{

        fmt.Println("Gotim")

        fmt.Println(port)

    }

    return port

}

我确实得到了随机 PORT CF 分配的日志,仍然停留在


2016-03-13T16:58:40.90-0700 [API/0]      OUT App instance exited with guid e5d417bd-c38d-4239-aa61-e9ca67fce79a payload: {"cc_partition"=>"default", "droplet"=>"e5d417bd-c38d-4239-aa61-e9ca67fce79a", "version"=>"8d7e80b3-69d5-4c83-9d37-1159d5deeba8", "instance"=>"14223d325c204406b87a131c065c16cc", "index"=>0, "reason"=>"CRASHED", "exit_status"=>-1, "exit_description"=>"failed to accept connections within health check timeout", "crash_timestamp"=>1457913520}

*已修复:问题是在本地主机上侦听,我没有指定 IP,我很高兴 *


炎炎设计
浏览 171回答 1
1回答

慕容3067478

来自关于故障排除的 Cloud Foundry 文档:确保您的应用程序代码使用PORT环境变量。您的应用程序可能会失败,因为它正在侦听错误的端口。不要对应用程序侦听的端口进行硬编码,而是使用PORT环境变量。[来源]来自关于环境变量的 Cloud Foundry 文档:应用程序应在其上侦听请求的端口。Cloud Foundry 运行时为应用程序的每个实例动态分配一个端口,因此获取或使用应用程序端口的代码应通过 PORT 环境变量引用它。[来源]因此,与其将您的应用程序硬编码为侦听端口 9000,它应该侦听PORT环境变量指定的端口,如果未设置该环境变量,则可以默认为 9000。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go