[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Flávio Alves
Criador Flávio Alves 18/08/2021

 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.

Manager Carlos Ferreira 18/08/2021

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

Carlos Ferreira
Criador Flávio Alves 18/08/2021

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.

Flávio Alves
Manager Carlos Ferreira 18/08/2021

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/)

Carlos Ferreira
Criador Flávio Alves 18/08/2021

Olá Carlos, segue print full da minha tela.

https://uploaddeimagens.com.br/imagens/xaHcWNs

Flávio Alves
Manager Carlos Ferreira 18/08/2021

No seu método show, qual é o valor para $uuid?
public function show($uuid)
{
    dd($uuid);

    // [...]
}

Me envia um print

Carlos Ferreira
Criador Flávio Alves 18/08/2021

segue Carlos:

 

https://uploaddeimagens.com.br/imagens/kOtIxcM

Flávio Alves
Manager Carlos Ferreira 18/08/2021

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);
}

Carlos Ferreira
Criador Flávio Alves 18/08/2021

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

Flávio Alves
Manager Carlos Ferreira 18/08/2021

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);
}

Carlos Ferreira
Criador Flávio Alves 18/08/2021

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
 
Flávio Alves
Manager Carlos Ferreira 18/08/2021

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?

Carlos Ferreira
Criador Flávio Alves 18/08/2021
MICRO_02_URL=host.docker.internal:8001
Flávio Alves
Manager Carlos Ferreira 18/08/2021

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

Carlos Ferreira
Criador Flávio Alves 18/08/2021

bom dia Carlos, obrigado aí pelo help, colocando o meu IP:8001 funcionou certinho. Obrigado.

Flávio Alves
Alexandre Possebon 18/08/2021

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",

Alexandre Possebon
Alexandre Possebon 18/08/2021

Lembrando que eu consigo acessar assim:

http://127.0.0.1:8001/evaluations/ade7e658-0b86-4cc2-b579-441f370f6627

Alexandre Possebon
Alexandre Possebon 18/08/2021
ERRO sem fim... nada de obter Sucesso:

"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",
"exception": "Illuminate\\Http\\Client\\ConnectionException",
"file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php",
"line": 689,
Alexandre Possebon
Manager Carlos Ferreira 18/08/2021

Olá, Alexandre!
Tudo bem?

Cria um nova thread (ticket) para discutirmos a sua dúvida.

No aguardo amigo.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!