dlapps/consul-php-envvar

从Consul KV定义缺失的环境变量,并在Symfony 3.2+容器中公开

1.1.1 2017-02-02 11:14 UTC

This package is not auto-updated.

Last update: 2024-09-15 09:08:28 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score SensioLabsInsight Total Downloads

该库允许开发人员从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

贡献

有关详细信息,请参阅CONTRIBUTINGCONDUCT

安全

如果您发现任何与安全相关的问题,请通过电子邮件petre [at] dreamlabs.ro而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件