我知道有很多关于此问题的问题,但我似乎找不到自己的答案。
我有LoginController
authenticate()
方法来处理登录过程。
public function authenticate()
{
$email = $_POST['email'];
$password = $_POST['password'];
if (Auth::attempt(['email' => $email, 'password' => $password])) {
$http = new \GuzzleHttp\Client([
'base_uri' => 'http://myapp.test'
]);
$response = $http->post('oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => '2',
'client_secret' => '_hashed-secret_',
'username' => $email,
'password' => $password,
'scope' => ''
]
]);
return json_decode((string) $response->getBody(), true);
}
}
我得到了cURL error 6: Could not resolve host: myapp.test (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
。我重启了我的服务器,什么都没有。我重建了所有容器(目前正在使用laradock
),什么也没有。
奇怪的是,它只出现在第一次尝试登录时。因此,当客户端尝试登录时,会出现error
,但是当客户端重新发送表单数据(F5
)时,它会消失,客户端会重定向到主页,表明客户端是登录。
我还重新配置了我的.env
和其他配置,其中包含hostname
(之前为localhost
,已更改为myapp.test
),但无法修复error
。
任何形式的帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
好的,我已经弄清楚了。在docker-compose.yml
文件上添加一些配置。
### PHP-FPM Container #######################################
...
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
- "myapp.test:${DOCKER_HOST_IP}"
networks:
- frontend
- backend
- webserver_network
...
### NGINX Server Container ##################################
networks:
#- frontend
#- backend
webserver_network:
ipv4_address: ${WEBSERVER_IP}
frontend:
backend:
...
### Networks Setup ############################################
webserver_network:
driver: "bridge"
config:
- subnet: "${WEBSERVER_SUBNET}"
gateway: "${WEBSERVER_GATEWAY}"
然后,重建php-fpm
容器。并得到它的工作。感谢。