Heroku 上的 Phoenix:错误 R10
Posted
技术标签:
【中文标题】Heroku 上的 Phoenix:错误 R10【英文标题】:Phoenix on Heroku: error R10 【发布时间】:2016-03-25 22:33:48 【问题描述】:在 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】:修复是双重的:
-
使用 phoenix buildpack 配置并导出 PORT,如下所示:
config_vars_to_export=(DATABASE_URL PORT)
避免在不重新编译应用的情况下更改MIX_ENV
,因为该行为不受支持,如here 所述。
【讨论】:
更新 (20/03/17):HashNuke buildpack 不再支持config_vars_to_export
设置;所有环境变量都将自动导出并可供构建使用。以上是关于Heroku 上的 Phoenix:错误 R10的主要内容,如果未能解决你的问题,请参考以下文章
将 elixir phoenix 应用程序部署到 heroku - 无法添加 buildpack