dotenvx和dotenv在环境变量注入方面有什么区别?
dotenvx和dotenv工具或者开发包,都会将.env
文件中的配置注入到环境变量中,
有一点不同的是,dotenvx会覆盖现有的环境变量,而dotenv则不会覆盖现有的环境变量。
dotenvx这样做的目的是为了保证加密优先的原则,这样做的好处是可以确保在运行程序时,
其他人不能通过调整环境变量来覆盖加密的配置项,从而破坏加密项的安全性。
如你有一个收款账号的配置项PAYMENT_ACCOUNT
,如果你使用dotenvx加密了这个配置项,
那么在运行程序时,dotenvx会将这个配置项注入到环境变量中,即便其他人设置了同名的环境变量,
dotenvx也会覆盖这个环境变量,确保程序使用的是加密的配置项。加密优先,也方便开发人员,
由于环境变量优先,开发人员不能确定运行期的配置是否被调整啦,所以要登录服务器或者系统去检查运行期配置项,
这个有时也比较麻烦的,如各种跳板机,查看敏感配置项的二次登录等。
dotenv为何采用环境变量优先的原则?这个主要是之前.env
文件并没有加密的功能,都是明文存储,
所以环境变量优先的原则,可以就灵活一些,允许用户通过设置环境变量来覆盖.env
文件中的配置项,
这对运维脚本编写就方便很多。
提示: 如果你能够对不同环境(profile)提前规划好配置,在实际的部署中,也极少去需要修改。