gpt4 book ai didi

go - 我的 Go 服务器无法在 cloud foundry 中启动

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:21 27 4
gpt4 key购买 nike

我有一个简单的 GO 服务器,我正试图将其推送到 Bosh lite 上的云类型转换厂(Vagrant + Virtual box。)

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

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

    -上帝

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

    list .yml

    简介

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

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

applications:
- name: weight
memory: 128MB
instances: 1

2 ) Procfile 看起来像这样。

worker: bin/weight

3 ) 我使用默认的构建包。

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

a-424e-b509-6df11fb32cc7 ({"state"=>"STOPPED"})
2016-03-13T11:02:45.70-0700 [DEA/0] OUT Got staging request for app with id 16d3795a-8cda-424e-b509-6df11fb32cc7
2016-03-13T11:02:46.84-0700 [API/0] OUT Updated app with guid 16d3795a-8cda-424e-b509-6df11fb32cc7 ({"state"=>"STARTED"})
2016-03-13T11:02:46.89-0700 [STG/0] OUT -----> Downloaded app package (12K)
2016-03-13T11:02:48.76-0700 [STG/0] OUT -----> Downloaded app buildpack cache (78M)
2016-03-13T11:02:48.82-0700 [STG/0] ERR Cloning into '/tmp/buildpacks/go-buildpack'...
2016-03-13T11:03:05.66-0700 [STG/0] OUT Submodule 'compile-extensions' (https://github.com/cloudfoundry/compile-extensions.git) registered for path 'compile-extensions'
2016-03-13T11:03:05.68-0700 [STG/0] ERR Cloning into 'compile-extensions'...
2016-03-13T11:03:07.59-0700 [STG/0] OUT Submodule path 'compile-extensions': checked out '26a578c06a62c763205833561fec1c5c6d34deb6'
2016-03-13T11:03:07.61-0700 [STG/0] OUT -------> Buildpack version 1.7.3
2016-03-13T11:03:09.81-0700 [STG/0] OUT https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/godep/godep-v55-linux-x64.tgz
2016-03-13T11:03:09.88-0700 [STG/0] OUT -----> Checking Godeps/Godeps.json file.
2016-03-13T11:03:09.92-0700 [STG/0] OUT -----> Using go1.5.3
2016-03-13T11:03:09.92-0700 [STG/0] OUT -----> Running: godep go install -tags cloudfoundry .
2016-03-13T11:03:11.19-0700 [STG/0] OUT -----> Uploading droplet (2.0M)
2016-03-13T11:03:25.11-0700 [DEA/0] OUT Starting app instance (index 0) with guid 16d3795a-8cda-424e-b509-6df11fb32cc7
2016-03-13T11:03:34.93-0700 [DEA/0] OUT Removing crash for app with id 16d3795a-8cda-424e-b509-6df11fb32cc7
2016-03-13T11:03:34.93-0700 [DEA/0] OUT Stopping app instance (index 0) with guid 16d3795a-8cda-424e-b509-6df11fb32cc7
2016-03-13T11:03:34.93-0700 [DEA/0] OUT Stopped app instance (index 0) with guid 16d3795a-8cda-424e-b509-6df11fb32cc7
2016-03-13T11:03:56.81-0700 [DEA/0] OUT Starting app instance (index 0) with guid 16d3795a-8cda-424e-b509-6df11fb32cc7
**2016-03-13T11:03:57.79-0700 [DEA/0] ERR Instance (index 0) failed to start accepting connections**
2016-03-13T11:03:57.80-0700 [API/0] OUT App instance exited with guid 16d3795a-8cda-424e-b509-6df11fb32cc7 payload: {"cc_partition"=>"default", "droplet"=>"16d3795a-8cda-424e-b509-6df11fb32cc7", "version"=>"2eeebbf8-e84e-412a-aeba-2adc0cffea6b", "instance"=>"910eba711c6e414bb7c6324565d0a9af", "index"=>0, "reason"=>"CRASHED", "exit_status"=>127, "exit_description"=>"failed to accept connections within health check timeout", "crash_timestamp"=>1457892237}

我试过设置

cf set-env weight PORT 9000

没有成功,我在用 list 和 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,我很高兴去 *

最佳答案

来自关于故障排除的 Cloud Foundry 文档:

Make sure your application code uses the PORT environment variable. Your application may be failing because it is listening on the wrong port. Instead of hard coding the port on which your application listens, use the PORT environment variable. [Source]

来自关于环境变量的 Cloud Foundry 文档:

The port on which the application should listen for requests. The Cloud Foundry runtime allocates a port dynamically for each instance of the application, so code that obtains or uses the application port should refer to it via the PORT environment variable. [Source]

因此,与其将您的应用程序硬编码为监听端口 9000,不如监听 PORT 环境变量指定的端口,如果未设置该环境变量,则可以默认为 9000。

关于go - 我的 Go 服务器无法在 cloud foundry 中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com