Каковы лучшие практики использования секретов докера в скрипте PHP?
Случай использования: у меня есть стек Docker, который состоит из (1) Web сервис, основанный на образе, который связывает php с сервером apache и (2) децибел Сервис основан на последнем изображении MySQL.
В / var / www / html на моем Web сервис, у меня есть config.php, который определяет ряд переменных, представляющих параметры подключения к базе данных (имя пользователя, пароль и т. д.). Этот файл config.php включен везде, где установлены соединения с базой данных в кодовой базе. У меня есть секреты докера, определенные в соответствии с каждым из параметров, которые я хочу определить в config.php — как лучше всего использовать эти секреты в определениях в config.php?
По умолчанию каждый секрет докера монтируется в файл /run/secrets/<secret name>
,
Моим наивным решением было просто использовать fopen () и fgets () следующим образом:
function getSecret($secret){
$secret_file = fopen("/run/secrets/{$secret}");
$secret = fgets($secret_file);
fclose($secret_file);
return $secret;
}
config.php:
return [
'database' => [
'host' => getSecret('db_host'),
'user' => getSecret('db_user'),
'password' => getSecret('db_password),
...
]
];
Это похоже на разумный подход?
Я закончил тем, что пошел с file_get_contents("/run/secrets/...");
Недокументированная «особенность» этого заключается в том, что по умолчанию добавляется новая строка в конце файла (0x0a
), так что нужно обрезать.
Конечный результат:
$dbpasswd = rtrim(file_get_contents("/run/secrets/mysql_password"));
Преимущество в том, что вам не нужно иметь дело с открытием и закрытием файла.
Необходимость обрезки раздражает.
Других решений пока нет …