Heroku上的凤凰:错误R10

时间:2016-03-25 22:33:49

标签: heroku elixir phoenix-framework

在Heroku上与Phoenix发生奇怪的错误,它似乎没有正确绑定到端口。

遇到phoenix没有绑定到$ PORT的情况。 Heroku的日志:

  

2016-03-25T22:22:54.716907 + 00:00 heroku [web.1]:状态从崩溃变为开始

     

2016-03-25T22:23:03.156662 + 00:00 heroku [web.1]:使用命令mix phoenix.server启动流程

     

2016-03-25T22:23:07.985368 + 00:00 app [web.1]:[info]使用端口4000上的http与Cowboy一起运行AppName.Endpoint

     

2016-03-25T22:23:10.027386 + 00:00 app [web.1]:25 Mar 22:23:10 - info:将5个文件编译成2个文件,在1.5秒内复制3个

     

2016-03-25T22:24:03.442109 + 00:00 heroku [web.1]:错误R10(启动超时) - > Web进程无法在启动后60秒内绑定到$ PORT

     

2016-03-25T22:24:03.442109 + 00:00 heroku [web.1]:使用SIGKILL停止流程

     

2016-03-25T22:24:04.195291 + 00:00 heroku [web.1]:退出流程状态为137

     

2016-03-25T22:24:04.211713 + 00:00 heroku [web.1]:状态从开始变为崩溃

我的prod.exs:

config :appname, AppName.Endpoint,
  http: [port: {:system, "PORT"}],
  url: [scheme: "https", host: "AppName.herokuapp.com", port: 443],
  force_ssl: [rewrite_on: [:x_forwarded_proto]],
  cache_static_manifest: "priv/static/manifest.json",
  secret_key_base: System.get_env("SECRET_KEY_BASE")

看起来它会移植到4000而不是Heroku想要的任何端口,我不知道为什么。

1 个答案:

答案 0 :(得分:2)

修复是双重的:

  1. 使用phoenix buildpack配置并导出PORT,如下所示:config_vars_to_export=(DATABASE_URL PORT)
  2. 避免更改MIX_ENV而不重新编译应用,因为该行为不受支持,如here所述。