Я пытаюсь развернуть приложение Laravel в GAE. Как упоминалось в документации, переменные среды должны быть добавлены в app.yaml
файл. Но поскольку исходный код находится на GitHub, и немногие люди участвуют в проекте, не рекомендуется помещать пароль базы данных и другие секреты приложения в app.yaml
файл. Также я не заинтересован в развертывании приложения с моей машины. Как мне предоставить эту информацию в приложение как .env
файл не поддерживается или его невозможно разместить другими способами. Кроме того, я бы использовал функцию push to deploy для развертывания кода в GAE из GitHub. Итак, как мне это сделать?
Этот пакет композитора является потенциальным решением. Он обрабатывает получение переменных из Google Datastore и соответствующее кеширование: https://github.com/tommerrett/laravel-GAE-secret-manager
Чтобы ответить на ваш вопрос о секретах приложений, вы можете использовать Cloud Datastore. Если вы еще не используете Datastore, вы можете настроить новый тип (например, схему), посетив консоль и выполнив следующие действия:
Sekrit
для добрыхSekrit
s дает каждому уникальное имяЗатем в приложении Laravel вы можете получить доступ к хранилищу данных, сказав:
require 'vendor/autoload.php';
use Google\Cloud\Datastore\DatastoreClient;
$datastore = new DatastoreClient();
И для каждой вещи, которую вам нужно получить, сделайте что-нибудь вроде:
$db_pass_datastore_key = $datastore->key('Sekrit', 'dbpass');
$db_pass_object = $datastore->lookup($db_pass_datastore_key);
$db_pass = $db_pass_object['payload'];