[Elixir003]通过环境变量(Environment Variables)来管理config

Posted 写着写着就懂了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Elixir003]通过环境变量(Environment Variables)来管理config相关的知识,希望对你有一定的参考价值。

在elixir的config中我们有时会使用的到一些不想暴露出来的配置项,常用的作法是如Phoenix

#config/prod.exs
use Mix.Config
...
# Finally import the config/prod.secret.exs
# which should be versioned separately.
import_config "prod.secret.exs"

在上面,我们可以把不应该暴露的项(如数据库passwd,auth_token...这些很重要的项)都写在prod.secret.exs(链接可见例子)中

我们再把prod.secret.exs这个文件不要加到项目的版本管理中, 单独开一个git仓库管理。

但是有时我们并不想再这样,还有一种方法(而且感觉比上面这种方法更好用)

就是把所有的应该写在prod.sesret.exs的项都写到系统的环境变量中

#config/prod.exs
use Mix.Config

....
config :application_name, ApplicationName.Repo,
  adapter: Ecto.Adapters.mysql,
  username: System.get_env("PROD_REPO_USERNAME"),
  password: System.get_env("PROD_REPO_PASSWORD"),
  database: System.get_env("PROD_REPO_DATABASE"),
  hostname: System.get_env("PROD_REPO_HOSTNAME")
...

这时只需要在服务器上

#prod.env
export
PROD_REPO_USERNAME=‘username‘ export PROD_REPO_PASSWORD=‘loveyou‘ export PROD_REPO_DATABASE=‘database‘ export PROD_REPO_HOSTNAME=‘11.11.11.11‘

只需要先

>source prod.env
>iex -S mix

这样就可以通过环境变量来管理elixir的配置啦。


 What benchmarks done on my developer machine look like to all my friends

技术分享

 

以上是关于[Elixir003]通过环境变量(Environment Variables)来管理config的主要内容,如果未能解决你的问题,请参考以下文章

Python操作环境变量

flask os.environ 的作用

访问进程环境变量environ时的一个坑

python操作环境变量

LINUX环境变量environ

进程控制