Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Observabilidade - Aula 3 - Connection refused: proxy-forum-api

Olá! Estou acompanhando o projeto de observabilidade em um Mac m1 e na aula 3 já não funciona o proxy. Dei uma pesquisada, mas ainda não achei uma solução para o erro de conexão.

Desde o começo tive que adicionar uma env var para funcionar os exemplos: DOCKER_DEFAULT_PLATFORM=linux/amd64.

Parece que o proxy configurado não funcionou:

proxy-forum-api       | 2023/08/20 21:12:22 [error] 29#29: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.25.0.3, server: _, request: "GET /topicos HTTP/1.1", upstream: "http://172.29.0.2:8080/topicos", host: "proxy-forum-api"

Vou continuar pesquisando e tentando resolver, mas se alguém tiver uma luz, agradeço!

Build inicial okPrimeira vez em que o erro apareceErros similares em sequência e loop infinito

1 resposta
solução!

Olá! Consegui resolver e vim partilhar o que rolou e como fiz. Se tiver um problema parecido, espero que ajude. ;)

  1. Verifiquei a conexão entre os containers e estava tudo ok.
    1. docker network ls - networks criadas ok
    2. docker inspect app-forum-api, docker inspect proxy-forum-api, etc - Networks configuradas ok
    3. docker exec -it proxy-forum-api bash
      1. apt-get update
      2. apt-get install iputils-ping -y
      3. ping app-forum-api - OK
      4. Nota: Isso não vai funcionar assim no app-forum-api, pq ele está com o user spring que não tem permissão de sudo como está configurado, mas nos outros funciona (user root).
  2. Notei que o container app-forum-api não tinha logs e sempre ficava unhealthy
    1. Tentei remover as definições para user e group spring - Nada mudou
    2. Mudei a imagem da JDK para eclipse-temurin:8 - Os jvm args "-XX:PermSize=64m","-XX:MaxPermSize=128m" não são mais usados e removi eles, mas ainda não resolveu o problema inicial
      1. Além disso, ainda deu um novo erro ao criar o user e group a dizer que o -S é ambíguo, vi os logs, dei uma pesquisada e mudei a forma em duas linhas para:
        1. RUN addgroup --system spring && newgrp spring
        2. RUN useradd -ms /bin/bash spring -g spring
  3. Entrei no container app-forum-api, dei um start manual no app com java -Xms128M -Xmx128M -Dspring.profiles.active=prod -jar /app.jar e o app começou a funcionar como deveria
    1. Mudei de ENTRYPOINT para CMD - Nada mudou
    2. Notei que demorou uns 60~70s para subir a app
  4. Achei que o healthcheck poderia estar executando e terminando antes de a aplicação subir por conta do tempo que falei ali em cima.
    1. Adicionei o parâmetro start_period: 30s no docker-compose.yml e voilà. :)
      1. Esse parâmetro faz com que o health check só comece depois de 30s em que o container está ready (não significa que a aplicação está ready)