Наследование переменных среды с помощью микросервисов (Laravel & Lumen)

Недавно я столкнулся с проблемой при развертывании люмен микросервис рядом с Laravel приложение. На одной машине у меня есть приложение Laravel и приложение Lumen с разными .env файл и переменные среды по умолчанию (APP_ENV, DB_HOST, DB_DATABASE, так далее).

мой Laravel Приложение должно сделать запрос на люмен приложение, чтобы получить некоторые данные. Вот когда возникает проблема. Когда люмен приложение получает запрос, оно также наследует Laravelпеременных среды, что делает невозможным выполнение своей работы (подключение к базе данных или другим службам, для которых переменные среды установлены в .env файл, потому что все переменные наследуются от родительского запроса).

Кто-нибудь сталкивался с этой проблемой раньше? Правильно ли я использую архитектуру микросервисов?

Обновить с кодом.

Приложение Laravel — UsersController.php

/**
* Makes a request to the Core API and fills properties with the response data
*
* @param $method
* @param $uri
* @param array|null $data
*/
public function request($method, $uri, array $data = null)
{
$this->api = new Client(['base_uri' => 'http://127.0.0.1/']);

if (property_exists($this, 'uriPrefix')) $uri = $this->uriPrefix . $uri;
$requestOptions = [
'http_errors'   => false,
'headers' => ['Accept' => 'application/json']
];
if (session('api_cookie')) $requestOptions['headers']['Cookie'] = implode(';', session('api_cookie'));
if ($data) {
if ($method == 'GET') $requestOptions['query'] = $data;
else if (($method == 'POST') || ($method == 'PUT')) $requestOptions['form_params'] = $data;
}

$response = $this->api->request($method, $uri, $requestOptions);

session(['api_cookie' => $response->getHeader('Set-Cookie')]);

$this->responseCode = $response->getStatusCode();
$this->responseReasonPhrase = $response->getReasonPhrase();
$this->responseData = $response->getBody();
}

Когда я делаю этот запрос люмен приложение не может подключиться к базе данных, потому что оно наследует DB_ переменные среды от родителя Laravel приложение.

0

Решение

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

Таким образом, вы можете хранить файлы .env в разных папках.

Я полагаю, что вы испытываете то, что приложение загружается одновременно, поэтому переменные используются вместе.

Если вы используете Homestead в качестве виртуальной машины, попробуйте создать два домена и разделить проект, а когда вашему приложению laravel необходимо вызвать lumen, вызовите его по имени хоста, и оно должно работать. (Обратите внимание, что только один vhost может называться localhost)

0

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

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

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