Как использовать секреты Docker в коде PHP?

Каковы лучшие практики использования секретов докера в скрипте 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),
...
]
];

Это похоже на разумный подход?

1

Решение

Я закончил тем, что пошел с file_get_contents("/run/secrets/...");

Недокументированная «особенность» этого заключается в том, что по умолчанию добавляется новая строка в конце файла (0x0a), так что нужно обрезать.

Конечный результат:

$dbpasswd = rtrim(file_get_contents("/run/secrets/mysql_password"));

Преимущество в том, что вам не нужно иметь дело с открытием и закрытием файла.
Необходимость обрезки раздражает.

http://php.net/manual/en/function.file-get-contents.php

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]