1
resposta

[Bug] Dificuldade para subir a stack com API e Prometheus.

Ao subir o docker-compose up -d. Os containers subiram e estão todos up. Ao checar os endpoints do nginx ( localhost, info, metrics OK). No endpoint health, o database está DOWN. E o endpoint localhost/topicos mostra o seguinte erro: Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Aug 10 23:16:56 GMT 2023 There was an unexpected error (type=Internal Server Error, status=500).

E no localhost/health: { "status": "DOWN", "components": { "db": { "status": "DOWN", "details": { "error": "org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure\n\nThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server." } }, "diskSpace": { "status": "UP", "details": { "total": 247570337792, "free": 147614670848, "threshold": 10485760, "exists": true } }, "ping": { "status": "UP" }, "redis": { "status": "UP", "details": { "version": "7.0.11" } } } }

Já dei permissões nas pastas chmod 777

Alguém pode me ajudar?

1 resposta

Olá, Tiago! Entendo que esteja passando por dificuldades e estou aqui para te ajudar.

O erro que você está encontrando indica que a aplicação não está conseguindo se conectar ao banco de dados MySQL. Isso pode ser devido a várias razões, mas com base no que você compartilhou, vou sugerir algumas possíveis soluções.

Primeiro, verifique se o serviço MySQL está realmente em execução. Você pode fazer isso usando o comando docker ps para listar todos os contêineres em execução. Se o MySQL não estiver lá, você pode precisar reiniciar o contêiner.

Segundo, verifique se a aplicação e o MySQL estão na mesma rede Docker. No arquivo docker-compose.yaml que foi compartilhado na aula, a aplicação e o MySQL estão na rede database.

Aqui está um exemplo de como isso deve aparecer no seu arquivo docker-compose.yaml:

services:
  mysql-forum-api:
    networks:
      - database
  app-forum-api:
    networks:
      - database
networks:
  database:

Se eles estiverem em redes diferentes, a aplicação não conseguirá se conectar ao MySQL, resultando no erro que você está vendo.

Terceiro, verifique as variáveis de ambiente do MySQL no docker-compose.yaml. Certifique-se de que a aplicação está usando as mesmas credenciais para se conectar ao MySQL.

Por último, você mencionou que já deu permissões nas pastas com chmod 777. Embora isso possa ser útil em alguns casos, também é uma prática de segurança ruim, pois dá a todos os usuários permissão para ler, escrever e executar. Recomendo restringir as permissões apenas aos usuários que realmente precisam delas.

Espero que essas sugestões possam te ajudar a resolver o problema. Lembre-se, é importante entender o que cada configuração faz antes de alterá-la. Espero ter ajudado e bons estudos!