问题设置生产端口号 - (RuntimeError)期望设置PORT环境变量

时间:2017-11-02 09:05:08

标签: elixir phoenix-framework edeliver

我使用edeliver在aws上部署。部署运行正常,但当我尝试使用curl localhost:8888访问控制台中的网站时,出现connection refused错误。

如果我尝试使用./rel/bin/app_name console启动应用,则会收到(RuntimeError) expected the PORT environment variable to be set。但是我的config/prod.exs看起来像这样。

use Mix.Config

config :elixir_deploy, ElixirDeployWeb.Endpoint,
  load_from_system_env: true,
  http: [port: 8888],
  ssl: false,
  url: [host: "example.com", port: 80],
  cache_static_manifest: "priv/static/cache_manifest.json"

config :logger, level: :info

import_config "prod.secret.exs"

我在这里缺少什么?如果我在手动启动之前设置了PORT=8888,它可以正常工作,但我宁愿自动启动edeliver

1 个答案:

答案 0 :(得分:5)

您需要将load_from_system_env设置为false(或者只删除该行)。如果它是true,则菲尼克斯生成的默认endpoint.ex将使用PORT环境变量的值,如果找不到它,则&#&# 39; ll引发错误。

if config[:load_from_system_env] do
  port = System.get_env("PORT") || raise "expected the PORT environment variable to be set"
  {:ok, Keyword.put(config, :http, [:inet6, port: port])}
else
  {:ok, config}
end

Source