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

文件 lib/phoenix_ecto/html.ex 上的编译错误

heroku 上的应用程序错误无法更新 heroku 配置

Heroku 上的 nodemon 启动错误

Heroku 上的“'/blog/' 处的编程错误”

Heroku / Clojure 部署上的端口错误