Currently the server configuration is part of the build process, including the prod.secret.exs, this is very cursed for many reason:
Any change to configuration requires recompile of application
Because config can impact which dependencies are compiled, when building in reproducible way, changing config invalidates a lot of caching
We can't prebuild anything, or build the software outside of the production machine which should be the only place where secrets are stored unencrypted
We can't use the same exact binary version in the integration and production environment
This highly increases the production server deployment complexity as now it also needs to contain the CI to build the software
This needs to be refactored to load configuration at runtime, when server starts, potentially also allowing to reload part of the configuration without having to restart the whole server just like it's done in many other servers that are supposed to be long running.
Currently the server configuration is part of the build process, including the
prod.secret.exs
, this is very cursed for many reason:This needs to be refactored to load configuration at runtime, when server starts, potentially also allowing to reload part of the configuration without having to restart the whole server just like it's done in many other servers that are supposed to be long running.