dotenv-org/phpdotenv-vault

从加密的 .env.vault 文件中加载环境变量

v0.2.4 2023-11-04 06:15 UTC

This package is auto-updated.

Last update: 2024-09-07 19:21:44 UTC


README

dotenv-vault

通过扩展phpdotenv的可靠和受信任的基础,引入了.env.vault文件。

扩展标准允许您在生产(和其他)环境中从.env.vault文件加载加密的秘密。由同样开创dotenv-nodejs的人提供。

🌱 安装

$ composer require dotenv-org/phpdotenv-vault

🏗️ 使用

开发使用与phpdotenv相同。

将您的应用程序配置添加到项目根目录下的.env文件中

# .env
S3_BUCKET="dotenv"
SECRET_KEY="souper_seekret_key"

在应用程序引导过程尽早加载 .env

require 'vendor/autoload.php';

$dotenv = DotenvVault\DotenvVault::createImmutable([__DIR__]);
$dotenv->safeLoad();

当应用程序加载时,这些变量将在$_SERVER中可用

$s3_bucket = $_SERVER['S3_BUCKET'];
echo $s3_bucket;

🚀 部署

通过以下方式加密环境变量

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环境变量,并回退到从.env加载dotenv的行为。

🌴 管理多个环境

您有两种管理多个环境的方法 - 本地管理或库管理 - 都使用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 会优雅地回退到 phpdotenv。这对于开发是默认设置,这样您可以专注于编辑您的 .env 文件,并在准备部署环境变量更改之前保存 build 命令。

我应该提交我的 .env 文件吗?

不。我们 强烈 建议不要将 .env 文件提交到版本控制。它应该只包含特定环境的值,例如数据库密码或API密钥。您的生产数据库应该具有与开发数据库不同的密码。

我应该提交我的 .env.vault 文件吗?

是的。这样做是安全且推荐的。它包含您的加密环境变量和保险库标识符。

我可以分享 DOTENV_KEY 吗?

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

贡献

  1. 将其Fork
  2. 创建您的功能分支(git checkout -b my-new-feature
  3. 提交您的更改(git commit -am '添加了一些功能'
  4. 推送到分支(git push origin my-new-feature
  5. 创建新的Pull Request

更改日志

查看 CHANGELOG.md

许可证

BSD-3