Как загрузить адрес и порт службы консула в переменную окружения - PullRequest
0 голосов
/ 21 января 2019

Я использую консул для поиска услуг. У меня есть простое веб-приложение на основе PHP / MySQL, в котором я использую консул в качестве службы для обнаружения моего приложения PHP в базе данных.

После 12-факторное приложение , рекомендуется сохранять конфиги (например, хост и порт базы данных) в переменных среды. Я не могу установить адрес службы БД и порты в переменные среды.

Однако я могу использовать шаблон консула , чтобы заполнить файл конфигурации, который я могу включить в мой код, и прочитать переменные.

Мой пример приложения выглядит так:

include_once('db.php');

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=$dbname;port=$port", $user, $pass);
    foreach($dbh->query('SELECT * from FOO') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

где db.php содержит переменные конфигурации. Шаблон консула db.ctmpl выглядит так:

<?php 
{{range $index, $element := service "db"}}
  {{if eq $index 0}}
    $hostname = '{{.Address}}';
    $port = {{.Port}};
  {{end}}
{{else}}
    $hostname = 'localhost';
    $port = 3306;
{{end}}
    $dbname = 'example';
    $user = 'root';
    $pass = 'root';
?>

, который при использовании шаблона консула успешно генерирует db.php с заполненным адресом и портом.

consul-template -consul=$CONSUL_URL -template="/templates/db.ctmpl:/var/www/html/db.php"

Я хочу знать, как я могу использовать шаблон консула для его загрузки в базу данных, чтобы я мог просто считывать переменные окружения в своем коде вместо того, чтобы включать дополнительный файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...