Erro ao startar micro_02
Olá Carlos, tudo certo ? Cara, fiz o clone do micro_02 do github, e tentei startar com o docker-compose up -d, mas tive erro no container do redis.
WARNING: Host is already in use by another container
Creating laravel-microservice-02_db_micro_02_1 ... done
Creating laravel-microservice-02_nginx_1 ... doneCreating laravel-microservice-02_micro_02_1 ... done
ERROR: for redis Cannot start service redis: driver failed programming external connectivity on endpoint laravel-microservice-02_redis_1 (0305a59fbba05c70961af5debfa69ac42946ae4d7d9cc6902a20a78359cf6783): Error starting userland proxy: listen tcp4 0.0.0.0:6379: bind: address already in use
ERROR: Encountered errors while bringing up the project.
Olá, Flábio!
Tudo bem?
Tem o projeto no GitHub?
Mas, sei o problema, está expondo a porta 6379 do redis nesse microservice também.
Ou expõe um porta diferente, ou nem exponha.
Pode deixar assim:
redis:
image: redis:latest
networks:
- microservices02
Fala Carlos blz ? Cara, o problema da porta do redis foi, mas to com um aqui que não consegui identificar o problema, na message do erro, diz que to passando uma int ao invés de um string, mas debugando aqui não percebi isso.
repositório: https://github.com/flavioalvespro/microservice-01-laravel
error:
"message": "strtolower() expects parameter 1 to be string, int given",
"exception": "TypeError",
"file": "/var/www/vendor/guzzlehttp/psr7/src/Utils.php",
"line": 28,
O erro acontece no método request da minha trait ConsumeExternalService.
Que bom que deu certo.
---
Me envia um print full da sua tela, só para eu ver o erro com mais detalhes (https://uploaddeimagens.com.br/)
Olá Carlos, segue print full da minha tela.
https://uploaddeimagens.com.br/imagens/xaHcWNs
No seu método show, qual é o valor para $uuid?
public function show($uuid)
{
dd($uuid);
// [...]
}
Me envia um print
segue Carlos:
https://uploaddeimagens.com.br/imagens/kOtIxcM
Dei uma conferida amigo, teoricamente o seu micro_01 está ok, o problema pode ser no micro_02
Só para ter certeza, o que isso daqui retorna?
public function show($uuid)
{
$company = $this->repository->where('uuid', $uuid)->firstOrFail();
// primeiro, debuga isso
dd($company);
// Depois, isso
dd($this->evaluationService->getEvaluationsCompany($uuid));
return new CompanyResource($company);
}
public function show($uuid)
{
$company = $this->repository->where('uuid', $uuid)->firstOrFail();
// primeiro, debuga isso
dd($company);
// resultado: https://uploaddeimagens.com.br/imagens/zKztC4A
// Depois, isso
dd($this->evaluationService->getEvaluationsCompany($uuid));
// resultado: https://uploaddeimagens.com.br/imagens/t0vNlNE
return new CompanyResource($company);
}
É justamente nesse método do evaluationService que a exceção é disparada. Seu eu tento acessar o micro_02 na rota que é chamada pelo evaluation service eu consigo, como segue na imagem: https://uploaddeimagens.com.br/imagens/d2YJzqg
Rodei o seu projeto aqui amigo.
Lá na sua trait ConsumeExternalService troquei o array_push para a função array_merge, e deu certo:
public function headers(array $headers = [])
{
$headers = array_merge($headers, [
'Accept' => 'application/json',
'Authorization' => $this->token
]);
return Http::withHeaders($headers);
}
fala Carlos, eu vi isso ontem, o array_push tava criando um array com uma posição então funcionou quando fiz:
{
$headers = array_push($headers, [
'Accept' => 'application/json',
'Authorization' => $this->token
]);
//resolvi passando a primeira posição do array
return Http::withHeaders($headers[0]);
}
Mas, ao executar novamente a chamada ao micro_02, tive um erro que acho que está ligado ao nome do host:
Illuminate\Http\Client\ConnectionException: cURL error 6: Could not resolve host: host.docker.internal (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://host.docker.internal:8001/evaluations/71e7051c-9e30-48ee-8aa3-9c98983b8c73 in file /var/www/vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php on line 689
Agora esse erro é outro, esse é porque não está conseguindo comunicar com o micro_02, na variável de ambiente MICRO_02_URL qual o valor que você colocou?
Tem o seu micro_01 atualizado no GitHub, e o micro_02 também?
Experimenta colocar o IP do seu host:
MICRO_02_URL=SEU_IP_AQUI:8001
bom dia Carlos, obrigado aí pelo help, colocando o meu IP:8001 funcionou certinho. Obrigado.
não está conseguindo comunicar com o micro_02, na variável de ambiente MICRO_02_URL
ja tentei MICRO_02_URL=SEU_IP_AQUI:8001
segue erro:
"message": "cURL error 7: Failed to connect to 127.0.0.1 port 8001: Connection refused (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://127.0.0.1:8001/evaluations/ade7e658-0b86-4cc2-b579-441f370f6627",
"exception": "Illuminate\\Http\\Client\\ConnectionException",
Lembrando que eu consigo acessar assim:
http://127.0.0.1:8001/evaluations/ade7e658-0b86-4cc2-b579-441f370f6627
"message": "cURL error 6: Could not resolve host: host.docker.internal (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://host.docker.internal:8001/evaluations/cef48619-6edc-4384-bd87-ea1473171029",
Olá, Alexandre!
Tudo bem?
Cria um nova thread (ticket) para discutirmos a sua dúvida.
No aguardo amigo.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!