无法启动Elixir Phoenix混合发行

我无法从mix phx.server开始我的项目。但是如果我运行mix phx.new asdf --umbrella --no-ecto --no-html --no-webpack

我可以通过执行以下操作从一个空项目中重新创建此问题:

mix.exs

然后编辑def project do [ apps_path: "apps",start_permanent: Mix.env() == :prod,deps: deps(),version: "0.1.0",releases: [ mega_umbrella: [ applications: [ mega: :permanent,mega_web: :permanent ] ] ] ] end 并添加一个发布部分:

config/prod.exs

然后从# import_config "prod.secret.exs删除最后一行

mix release

运行_build/dev/rel/asdf_umbrella/bin/asdf_umbrella start

运行elixir --version Erlang/OTP 22 [erts-10.5.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe] [dtrace] Elixir 1.9.2 (compiled with Erlang/OTP 22)

应用程序就挂在那里。

我做错了什么,为什么它只是挂在那里?

我的版本信息:

arr.push
jiesite 回答:无法启动Elixir Phoenix混合发行

首先,关于配置,在新版酒厂中,有一个称为运行时配置的新功能,在编译时更喜欢巫婆而不是那些,您可以阅读有关它们的更多信息here

此功能背后的基本思想是,您可以在服务器运行时获取环境变量,而与旧配置相比,您必须在构建时提供所有配置,这在使用容器时通常非常方便更灵活。

进行运行时配置的步骤如下:

  1. config文件夹中创建releases.exs文件;
  2. 复制您在prod.exs中提供的所有配置,或者至少复制要覆盖的部分;
  3. 使用System.fetch_env!\1从环境变量中获取数据;

您应该记住,运行时配置会覆盖之前的配置,因此,例如,如果您在编译时提供了prod.exs配置,则releases.exs中的所有新内容都将覆盖旧配置。

这种配置的一部分示例是:

config :tachocard_api,TachocardApi.Repo,username: System.fetch_env!("PGUSER"),password: System.fetch_env!("PGPASSWORD"),database: System.fetch_env!("PGDATABASE"),hostname: System.fetch_env!("PGHOST"),pool_size: 10

然后在部署环境中将这些环境变量设置为所需的值。推荐使用System.fetch_env!/1爆炸版本,因为如果未设置环境变量,它将引发错误。

本文链接:https://www.f2er.com/3118583.html

大家都在问