Я использую консул для поиска услуг. У меня есть простое веб-приложение на основе 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"
Я хочу знать, как я могу использовать шаблон консула для его загрузки в базу данных, чтобы я мог просто считывать переменные окружения в своем коде вместо того, чтобы включать дополнительный файл?