我有一个简单的 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,我很高兴 *
慕容3067478
相关分类