在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想要的任何端口,我不知道为什么。
答案 0 :(得分:2)
修复是双重的:
config_vars_to_export=(DATABASE_URL PORT)
MIX_ENV
而不重新编译应用,因为该行为不受支持,如here所述。