2 个版本
0.1.2 | 2024年5月15日 |
---|---|
0.1.1 | 2023年7月22日 |
0.1.0 |
|
#100 在 配置
121 每月下载量
用于 2 crates
37KB
641 行
dotenv-vault-rs
通过添加 .env.vault
文件支持扩展 dotenvy crate。
扩展的标准允许您在生产和其它环境中加载来自您的 .env.vault
文件的加密密钥。
安装 CLI
dotenv-vault CLI 允许加载 .env.vault
文件并使用设置的环境变量运行指定的程序。
cargo install dotenv-vault --features cli
CLI 使用方法
dotenv-vault run -- some_program arg1 arg2
或者在不同的工作目录中运行,该目录包含 .env.vault
文件并覆盖现有的环境变量
dotenv-vault run --cwd ./some_folder --override -- some_program arg1 arg2
安装
cargo add dotenv-vault
使用方法
开发时的使用方法与 dotenvy 相同。
将应用程序配置添加到您的项目根目录中的 .env
文件中
# .env
S3_BUCKET=YOURS3BUCKET
SECRET_KEY=YOURSECRETKEYGOESHERE
在应用程序中尽早导入和配置 dotenv-vault
fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenv_vault::dotenv()?;
let s3_bucket = std::env::var("S3_BUCKET")?;
let secret_key = std::env::var("SECRET_KEY")?;
// now do something with s3 or whatever
Ok(())
}
就是这样!std::env::var
有你在 .env
文件中定义的键和值。在开发中继续以此方式使用它。它的工作方式与 dotenvy 相同。
部署
通过执行以下操作加密环境设置
npx dotenv-vault local build
这将创建一个加密的 .env.vault
文件以及一个包含加密密钥的 .env.keys
文件。通过复制并粘贴 .env.keys
文件中的密钥值来设置 DOTENV_KEY
环境变量。例如在 heroku 上
heroku config:set DOTENV_KEY=<key string from .env.keys>
安全地将 .env.vault 文件提交到代码并部署。您的 .env.vault 文件在启动时将被解密,其环境变量将被注入,您的应用程序将按预期工作。
注意,当设置了 DOTENV_KEY
环境变量时,环境设置将始终从项目根目录下的 .env.vault
文件加载。对于开发使用,您可以将 DOTENV_KEY
环境变量保持未设置,并回退到从 dotenvy
加载 .env
或指定文件集的行为(有关详细信息,请参阅 dotenvy 中的使用说明)。
管理多个环境
您有两种方式来管理多个环境 - 本地管理或库管理 - 都使用 dotenv-vault。
本地管理从不发起远程 API 调用。它完全在您的机器上管理。库管理增加了备份您的 .env 文件、跨团队安全共享、访问权限和版本历史等便利性。选择最适合您的方式。
本地管理
在项目的根目录下创建一个 .env.production
文件,并将您的生产值放在那里。
# .env.production
S3_BUCKET="PRODUCTION_S3BUCKET"
SECRET_KEY="PRODUCTION_SECRETKEYGOESHERE"
重新构建您的 .env.vault
文件。
npx dotenv-vault local build
查看您的 .env.keys
文件。其中有一个与您的 .env.vault
文件中的 DOTENV_VAULT_PRODUCTION
加密匹配的生产 DOTENV_KEY
。
在您的服务器上设置生产 DOTENV_KEY
,将 .env.vault
文件提交到代码库,并部署。就这么简单!
.env.vault 文件将在启动时解密,其生产环境变量注入,您的应用程序将按预期运行。
库管理
同步您的 .env 文件。运行推送命令并遵循说明。 了解更多信息
$ npx dotenv-vault push
使用内置的 UI 管理多个环境。 了解更多信息
$ npx dotenv-vault open
使用多个环境构建您的 .env.vault
文件。
$ npx dotenv-vault build
访问您的 DOTENV_KEY
。
$ npx dotenv-vault keys
在您的服务器上设置生产 DOTENV_KEY
,将 .env.vault
文件提交到代码库,并部署。就这么简单!
常见问题解答
如果未设置 DOTENV_KEY
会发生什么?
当 DOTENV_KEY
未设置时,Dotenv Vault 将优雅地回退到 dotenvy。这是开发时的默认设置,这样您可以专注于编辑 .env
文件,直到您准备部署环境变量更改。
我应该提交我的 .env
文件吗?
不。我们 强烈 建议不要将 .env
文件提交到版本控制。它应仅包含特定于环境的值,如数据库密码或 API 密钥。您的生产数据库应具有与开发数据库不同的密码。
我应该提交我的 .env.vault
文件吗?
是的。这样做是安全和推荐的。它包含您的加密 envs 和您的库标识符。
我可以分享 DOTENV_KEY
吗?
不。这是解锁加密环境变量的密钥。务必小心与谁分享此密钥。不要让它泄露。
贡献
- 分叉它
- 创建您的功能分支(
git checkout -b my-new-feature
) - 提交您的更改(
git commit -am 'Added some feature'
) - 推送到分支(
git push origin my-new-feature
) - 创建新的拉取请求
变更日志
许可证
MIT
依赖项
~2.5MB
~74K SLoC