#env #vault #env-file #环境 #设置 #dotenv

bin+lib dotenv-vault

dotenvy 的扩展,支持 .env.vault 文件

2 个版本

0.1.2 2024年5月15日
0.1.1 2023年7月22日
0.1.0 2023年7月22日

#100配置

Download history 14/week @ 2024-04-29 15/week @ 2024-05-06 169/week @ 2024-05-13 45/week @ 2024-05-20 14/week @ 2024-05-27 25/week @ 2024-06-03 12/week @ 2024-06-10 12/week @ 2024-06-17 22/week @ 2024-06-24 18/week @ 2024-07-01 3/week @ 2024-07-08 9/week @ 2024-07-15 15/week @ 2024-07-22 45/week @ 2024-07-29 51/week @ 2024-08-05 9/week @ 2024-08-12

121 每月下载量
用于 2 crates

MIT 许可证

37KB
641

dotenv-vault-rs

crates.io msrv 1.73.0 ci docs

通过添加 .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 吗?

不。这是解锁加密环境变量的密钥。务必小心与谁分享此密钥。不要让它泄露。

贡献

  1. 分叉它
  2. 创建您的功能分支(git checkout -b my-new-feature
  3. 提交您的更改(git commit -am 'Added some feature'
  4. 推送到分支(git push origin my-new-feature
  5. 创建新的拉取请求

变更日志

查看CHANGELOG.md

许可证

MIT

依赖项

~2.5MB
~74K SLoC