Skip to main content

mise如何集成Dotenvx做环境变量管理?

· 2 min read
Libing Chen
Java程序员,兼全栈、Rust和AI开发

不少同学在使用mise作为项目开发工具,但是mise的Secret管理有点复杂,当然不少同学可能会选择sops, 可能还不是那么便捷,门槛也比较高一些。那么能否让Dotenvx来管理mise的环境变量呢? 这样既可以做到.env文件同时可以被mise和应用程序使用,同时关键配置中的敏感数据还是加密的。 那么如何做到这一点呢?

mise提供了多种加载环境变量的方式,其中一个就是执行外部脚本并导入该脚本中导出的环境变量, 举一个例子, 你创建一个scripts/env.sh脚本,内容如下:

export ADMIN=linux_china

然后你在mise.toml文件中添加以下代码:

[env]
_.source = "scripts/env.sh"

然后你执行一下mise env --json就可以看到ADMIN环境变量啦。

借助该机制,我们只需要调整一下env.sh脚本,调整为从Dotenvx加载加密的环境变量,代码如下:

eval $( dotenvx decrypt --stdout --format shell )

然后你通过dotenvx init创建一个.env,然后执行dotenvx set --encrypt admin your_name, 就可以生成加密的.env文件,然后你在执行一下mise env --json就可以看到加载的环境变量。 加载环境变量的过程中,dotenvx会自动完成变量的解密。

提示: 不要担心脚本的执行性能,dotenvx命令行的在执行效率会非常高。