我无法从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
答案 0 :(得分:2)
首先,关于配置,在新版酒厂中,有一个称为运行时配置的新功能,在编译时更喜欢巫婆而不是那些,您可以阅读有关它们的更多信息here。
此功能背后的基本思想是,您可以在服务器运行时获取环境变量,而与旧配置相比,您必须在构建时提供所有配置,这在使用容器时通常非常方便更灵活。
进行运行时配置的步骤如下:
config
文件夹中创建releases.exs
文件; prod.exs
中提供的所有配置,或者至少复制要覆盖的部分; 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
爆炸版本,因为如果未设置环境变量,它将引发错误。