dlapps / consul-php-envvar
从Consul KV定义缺失的环境变量,并在Symfony 3.2+容器中公开
Requires
- php: >=7.0
- sensiolabs/consul-php-sdk: ^2.0
- symfony/dependency-injection: ^3.2
Requires (Dev)
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^2.7
This package is not auto-updated.
Last update: 2024-09-15 09:08:28 UTC
README
该库允许开发人员从Consul KV存储检索缺失的环境变量,并在运行的PHP进程以及Symfony 3.2+容器中使其可用。
该包支持PSR-4自动加载,符合PSR-2规范,并通过自动化测试进行了良好测试。该库在Dreamlabs生态系统中也得到积极使用。
安装
通过Composer
$ composer require dlapps/consul-php-envvar
用法
为了能够与库交互,需要ConsulEnvManager类的实例。可以通过专用构建器轻松获取,如下所示
$manager = (new ConsulEnvManagerBuilder())->build();
相同的构建器可以进行自定义
- 通过将覆盖标志设置为true,即使环境变量已经被定义,它也会使用Consul中的最新值进行更新。
- 通过设置Consul服务器的URL。
$manager = (new ConsulEnvManagerBuilder()) ->withOverwriteEvenIfDefined(true) ->withConsulServer('https://consul.example.com:9123') ->build();
一旦获得ConsulEnvManager实例,就可以使用ConsulEnvManager::getEnvVarsFromConsul($mappings)方法来提供一组环境变量映射到Consul KV路径。以下是一个示例
$manager = (new ConsulEnvManagerBuilder())->build(); $manager->getEnvVarsFromConsul([ 'MYSQL_HOST' => 'dreamlabs/mysql/host', 'MYSQL_PORT' => 'dreamlabs/mysql/port', 'MYSQL_DB' => 'dreamlabs/mysql/db', 'MYSQL_USER' => 'dreamlabs/mysql/user', 'MYSQL_PASS' => 'dreamlabs/mysql/pass', ]);
运行上述代码片段后,当前运行的PHP进程将可以访问MYSQL_HOST、MYSQL_PORT、MYSQL_DB、MYSQL_USER和MYSQL_PASS环境变量。
为了将环境变量也注册到Symfony 3.2+容器中作为默认值,可以使用ConsulEnvManager::exposeEnvironmentIntoContainer($container, $mappings)方法。
以下是一个关于parameters.php和parameters.yml的示例
declare(strict_types = 1); $manager = (new \DL\ConsulPhpEnvVar\Builder\ConsulEnvManagerBuilder())->build(); $mappings = [ 'MYSQL_HOST' => 'dreamlabs/mysql/host', 'MYSQL_PORT' => 'dreamlabs/mysql/port', 'MYSQL_DB' => 'dreamlabs/mysql/db', 'MYSQL_USER' => 'dreamlabs/mysql/user', 'MYSQL_PASS' => 'dreamlabs/mysql/pass', ]; $manager->getEnvVarsFromConsul($mappings); $manager->exposeEnvironmentIntoContainer($container, $mappings);
parameters: database_host: '%env(MYSQL_HOST)%' database_port: '%env(MYSQL_PORT)%' database_name: '%env(MYSQL_DB)%' database_user: '%env(MYSQL_USER)%' database_password: '%env(MYSQL_PASS)%'
测试
$ composer test
PSR-2兼容性
$ composer check-styles $ composer fix-styles
贡献
有关详细信息,请参阅CONTRIBUTING和CONDUCT。
安全
如果您发现任何与安全相关的问题,请通过电子邮件petre [at] dreamlabs.ro而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。