DopplerConfigProvider
Doppler ConfigProvider for Elixir projects.
Installation
The package can be installed by adding :doppler_config_provider to your list of dependencies in mix.exs:
def deps do
[
{:doppler_config_provider, "~> 0.4.0"},
# Mojito is optional, but it is the default if you don't specify `:http_module` in options.
{:mojito, "~> 0.7.10"},
]
endUsage
- Generate a service token.
- Add necessary config.
-
Add the config provider to
releaseconfig inmix.exs.
Options
:service_token(required) - The Doppler service token.:http_module(optional) - The HTTP client module. Defaults to{Mojito, :mojito}. Should implementDopplerConfigProvider.HTTPClientbehaviour.:json_module(optional) - The JSON decoding module. Defaults to{Jason, :jason}or{Poison, :poison}. Should implementDopplerConfigProvider.JSONDecoderbehaviour.:mappings(required) - A map specifying how to translate the Doppler config to application config.
The :http_module and :json_module options can take either a module (e.g. MyApp.Foobar) or a tuple with the module
and the apps that need to be started for the module to work properly (e.g. {MyApp.Foobar, :mojito} or {MyApp.Foobar, [:tesla, :hackney]}).
Config example:
config :doppler_config_provider,
service_token: System.fetch_env!("DOPPLER_TOKEN"),
mappings: %{
"DATABASE_URL" => [:my_app, MyApp.Repo, :url],
"SECRET_KEY_BASE" => [:my_app, MyAppWeb.Endpoint, :secret_key_base],
"STRIPE_SECRET_KEY" => [:stripity_stripe, :api_key],
}mix.exs example:
releases: [
my_app: [
# ...
config_providers: [
{DopplerConfigProvider, http_module: {MyDopplerHTTPClient, [:tesla, :hackney]}}
]
]
],Notes:
-
The options provided to the config provider in
releasesare merged with the config provided in your config files. The options passed inmix.exstake precedence.