Configuring secrets on Elixir 1.10.4

I am running elixir version 1.10.4 on Centos 7 and having trouble with runtime.exs fetching environment variables configured in the systemd service.

The same setup works on Ubuntu 20.04 but running elixir 1.11.4.

My assumption was runtime.exs was introduced in version 1.10.* and should therefore work? If so, what other option do I have because the values are defined in a systemd service that looks like this:

[Unit]
Description=My Service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
EnvironmentFile=/etc/systemd/system/myservice.conf
ExecStart=/home/applicationuser/myservice/prod/rel/myservice/bin/myservice start
ExecStop=/home/applicationuser/myservice/prod/rel/myservice/bin/myservice stop
Restart=on-failure
User=applicationuser
StartLimitIntervalSec=45
[Install]
WantedBy=multi-user.target

I just read the documentation, my fear was that the environment variables would not be detected at compile time, I don’t know why I assumed they won’t be read from releases.exs.

Can you clarify this a bit? What is the specific issue you are having? Are the environment variables not being read? At compile or runtime?

runtime.exs was introduced in 1.11, releases.exs exists in 1.10. You mentioned both, which one are you using?

Note that runtime.exs will be evaluated in a development environment also, whereas releases.exs will only be evaluated when running a release.

2 Likes

Thank you for your response and apologies for responding late.

I was using runtime.exs having forgotten it was introduced in 1.11 and not in 1.10 so was pulling my hair as to why the configurations were not being read at application start.

Moving the configuration to releases.exs kind of worked, I have specified application port as 4000 but it runs on 16392 which I was not going to investigate yet because of a deadline :frowning: