草庐IT

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

coder 2024-07-06 原文

我有一个简单的 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/

有关go - 我的 Go 服务器无法在 cloud foundry 中启动的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  4. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  7. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  8. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  9. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  10. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

随机推荐