amnu3387
Distillery and compile time ENV variables not being used on restart
Hey, hope any one more experienced with Distillery can shed some light on this issue.
So I have read through quite a bit of disparate sources on how to access env variables when deploying through Distillery. What I ended up doing was to create a prod.secret.exs the deployment user folder. This works - I’ve used interpolated values with “${…}” on my ~/.profile I have:
export REPLACE_OS_VARS=true
On /.deliver/config I have the following hook pointing to the prod.secret.exs on the server.
pre_erlang_get_and_update_deps()
And I also uncommented the load profile line on the clean_compile hook.
pre_erlang_clean_compile() {
status "Running phoenix.digest" # log output prepended with '---->'
__sync_remote " # runs the commands on the build host
-f ~/.profile ] && source ~/.profile # load profile (optional)
source ~/.profile
...
}
This is for the compilation and is working as expected. Whenever I build and release, or upgrade and release the correct ENV variables are fetched from the ENV, and used in the interpolation in prod.secret.exs
But, whenever I restart through edeliver, or if I reboot the server, no longer are they used.
If I open ~/app/var/sys.config the correct values appear on the erlang config.
If I go to a release where I restart the server and open sys.config (e.g. ~/app/releases/0.0.11/sys.config), those values are not interpolated, whereas if I check on a release that wasn’t rebooted they are.
What else am I missing about it in order to have them correctly populated on reboot? Or do I need a different setup altogether to have this working, like fetching from env and setting them on runtime? If so anyone knows a good place to check an example of how to hook that up before app start?
Thanks
Most Liked
wmnnd
I am personally not a big fan of prod.secret.exs because I find that it is generally better if a production system can be configured with environment variables following the Twelve-Factor App principles.
You could debug whether your .profile is run by simply logging the result of System.get_env/0 and verifying that all your required variables (including REPLACE_OS_VARS) are set.
Last Post!
amnu3387
Yes I agree - I will try to figure out why it’s happening or find another solution for this, 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
- #forms
- #api
- #metaprogramming
- #hex
- #security









