为什么 Phoenix 需要一个用于环境变量的秘密配置文件?
Why does Phoenix need a secrets config file for environment vaiables?
我刚刚开始使用 Phoenix,我注意到在我生成的应用程序中有 prod.exs
和 prod.secret.exs
文件。但是,prod.secret.exs
文件中加载的秘密值来自环境变量,实际上并没有提交给 repo。如果是这样,是否需要 prod.secret.exs
文件?我可以从 prod.exs
中的环境变量中加载所有内容然后收工吗?
prod.secret.exs
是在我们拥有易于使用的发布运行时配置之前管理机密的另一种方式。我相信现在这是一个遗产。
我将此作为答案而不是评论的原因是愿意声明 elixir 世界中几乎没有约定,[几乎] 一切都明确完成。
.exs
是一个脚本文件,不像.ex
文件,默认情况下不被mix
编译。 prod.secret.exs
可能已命名为 foo.bar.baz.exs
,phoenix-framework 使用它的唯一原因是它从 prod.exs
.
显式加载
后者又被加载,因为 config.exs
有一行 import_config("#{Mix.env()}.exs")
。
也就是说,对于 elixir 和 phoenix-framework 的现代版本,人们可能会坚持使用系统环境配置和 运行时发布配置 。没有强制开发人员使用 prod.secret.exs
的约定,而且从未如此(该文件仍然由 env-specific 配置显式加载。)
我刚刚开始使用 Phoenix,我注意到在我生成的应用程序中有 prod.exs
和 prod.secret.exs
文件。但是,prod.secret.exs
文件中加载的秘密值来自环境变量,实际上并没有提交给 repo。如果是这样,是否需要 prod.secret.exs
文件?我可以从 prod.exs
中的环境变量中加载所有内容然后收工吗?
prod.secret.exs
是在我们拥有易于使用的发布运行时配置之前管理机密的另一种方式。我相信现在这是一个遗产。
我将此作为答案而不是评论的原因是愿意声明 elixir 世界中几乎没有约定,[几乎] 一切都明确完成。
.exs
是一个脚本文件,不像.ex
文件,默认情况下不被mix
编译。 prod.secret.exs
可能已命名为 foo.bar.baz.exs
,phoenix-framework 使用它的唯一原因是它从 prod.exs
.
后者又被加载,因为 config.exs
有一行 import_config("#{Mix.env()}.exs")
。
也就是说,对于 elixir 和 phoenix-framework 的现代版本,人们可能会坚持使用系统环境配置和 运行时发布配置 。没有强制开发人员使用 prod.secret.exs
的约定,而且从未如此(该文件仍然由 env-specific 配置显式加载。)