The configuration of your config/config.exs
files is - as you probably already know - evaluated at build time. In case of a release this is when you’re assembling the release.
The fully evaluated configuration is then written to the sys.config
file in your release folder (which is an erlang file). Assuming you have an app called my_app
and built a release for the prod
environment with the app version 0.1.0
you can find it at _build/prod/rel/my_app/releases/0.1.0/sys.config
.
Here is how it looks for a project of ours (with sensitive configuration replaced with ***
):
[{distillery,
[{config_providers,
[{'Elixir.Distillery.Releases.Config.Providers.Elixir',
[<<"${RELEASE_ROOT_DIR}/etc/config.exs">>]}]}]},
{sasl,[{errlog_type,error},{sasl_error_logger,false}]},
{facts,
[{ecto_repos,['Elixir.MyApp.Repo']},
{generators,[{binary_id,true}]},
{'Elixir.MyAppWeb.Gettext',[{default_locale,<<"de">>}]}]},
{'Elixir.MyAppWeb.Endpoint',
[{url,[{host,<<"***">>}]},
{secret_key_base, <<"***">>},
{render_errors,
[{view,'Elixir.MyAppWeb.ErrorView'},
{accepts,[<<"html">>,<<"json">>]}]},
{pubsub,
[{name,'Elixir.MyApp.PubSub'},
{adapter,'Elixir.Phoenix.PubSub.PG2'}]},
{live_view,[{signing_salt,<<"***">>}]}]}]},
{phoenix,[{json_library,'Elixir.Jason'}]},
{logger,
[{console,
[{format,<<"$time $metadata[$level] $message\n">>},
{metadata,[request_id]}]},
{level,info}]},
{sentry,
[{included_environments,[<<"production">>,<<"staging">>]},
{enable_source_code_context,true}]}].
While this particular project is using distillery to assemble the release the process is fundamentally the same of you use elixir releases.