fxn
Enabling the server in a release, how does it work?
The release docs of Phoenix say to put
config :my_app, MyApp.Endpoint, server: true
in config/prod.secret.exs. However, while that file is processed when the release task runs, it is not processed when the release starts. The application resource file of Phoenix has serve_endpoints to false, and the resource file of the Phoenix application itself does not include application environment.
How does that flag end up in the release? Where is it stored and loaded?
Marked As Solved
wolf4earth
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.
Last Post!
fxn
Aaahh, indeed, I believe there was a day in which I knew that, had totally forgotten it. Thanks!
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









