davidcochrum / dotenv-vault-laravel
Laravel 包,用于从加密的 .env.vault 文件中加载环境变量
Requires
- php: ^8.0|^7.1.3
- dotenv-org/phpdotenv-vault: ^0.2.4
- illuminate/support: ^10.0|^9.0|^8.0|^7.0|^6.0|^5.8
Requires (Dev)
- captainhook/captainhook: ^5.8
- captainhook/plugin-composer: ^5.3
- orchestra/testbench: ^6.0
- php-mock/php-mock-phpunit: ^2.8
- phpunit/phpunit: ^9.0
README
一个 Laravel 包,它扩展了经过验证和信任的 phpdotenv 基础,并添加了 .env.vault
文件。
扩展的规范允许您在(生产等)环境中从您的 .env.vault
文件加载加密的秘密。由那些开创了 dotenv-nodejs 的人提供。
🌱 安装
Composer 包
composer require davidcochrum/dotenv-vault-laravel
DotEnv Vault CLI
根据您的需求选择合适的 CLI: dotenv.org/docs
Mac (Brew)
brew install dotenv-org/brew/dotenv-vault
Node JS
npx dotenv-vault@latest
🏗️ 使用
开发使用与 phpdotenv 相同。
将应用程序配置添加到项目根目录下的 .env
文件中
# .env
S3_BUCKET="dotenv"
SECRET_KEY="souper_seekret_key"
当您的应用程序加载时,这些变量将通过 env()
函数可用
$s3_bucket = env('S3_BUCKET');
echo $s3_bucket;
🔧 自定义配置
如果您需要自定义存储 .env.vault
的路径,发布包配置文件并按需更新设置
php artisan vendor:publish --tag=dotenv-vault
🚀 部署
通过以下方式加密环境变量
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
行为。
为了方便,此包支持从 key.env
文件存储和加载您的 DOTENV_KEY
。 请不要提交此文件!! 而是将其添加到您的 .gitignore
中。
示例
# key.env
DOTENV_KEY="dotenv://:key_0000000000000000000000000000000000000000000000000000000000000000@dotenv.local/vault/.env.vault?environment=development"
🌴 管理多个环境
您有两种管理多个环境的选择 - 本地管理或 vault 管理 - 两种都使用 dotenv-vault。
本地管理永远不会进行远程 API 调用。它完全由您的机器管理。Vault 管理提供了诸如备份您的 .env 文件、安全地在团队之间共享、访问权限和版本历史记录等便利功能。选择最适合您的方案。
💻 本地管理
在项目根目录中创建一个 .env.production
文件,并将您的生产值放在那里。
# .env.production
S3_BUCKET="PRODUCTION_S3BUCKET"
SECRET_KEY="PRODUCTION_SECRETKEYGOESHERE"
重建您的 .env.vault
文件。
npx dotenv-vault local build
查看您的 .env.keys
文件。有一个生产 DOTENV_KEY
与您的 .env.vault
文件中的 DOTENV_VAULT_PRODUCTION
密码配对。
在您的服务器上设置生产 DOTENV_KEY
,重新提交您的 .env.vault
文件到代码,并部署。就这样!
您的 .env.vault
将在启动时解密,其生产环境变量注入,并且您的应用程序按预期运行。
🔐 Vault 管理模式
同步您的 .env 文件。运行 push 命令并按照指示操作。 了解更多
$ 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
文件吗?
是的。这样做是安全且推荐的。它包含您的加密环境变量和保险库标识符。
我应该提交我的 key.env
文件吗?
不。它包含解锁加密环境变量的密钥。请不要泄露。
我可以分享 DOTENV_KEY
吗?
不。这是解锁加密环境变量的密钥。请非常小心您与之共享此密钥的人。请不要泄露。
许可证
MIT