1
resposta

Erro de conexão do mysql com docker

Comigo a solução proposta em tópicos anteriores neste forum não funcionou.

Rodei o comando: docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.0.0 Alterei o .properties para: spring.datasource.url=jdbc:mysql://localhost:3306/alurafood-pedidos?createDatabaseIfNotExist=true spring.datasource.username=root spring.datasource.password=my-secret-pw

Consigo conectar através de linha de comando e pelo MySQL Workbench, porém quanto rodo o microserviço de pedidos dá o erro abaixo:

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:815) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:438) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:189) ~[mysql-connector-j-8.3.0.jar:8.3.0] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar:na] .....

1 resposta

Olá Marco! Tudo bem? A mensagem de erro "Communications link failure" geralmente indica que a aplicação não está conseguindo se comunicar com o banco de dados. Aqui estão algumas dicas que podem ajudar a resolver esse problema:

  1. Verifique o Host e a Porta: Certifique-se de que o host e a porta no seu arquivo application.properties estão corretos. Como você está rodando o MySQL em um container, a aplicação pode não conseguir acessar o banco de dados usando localhost. Tente usar host.docker.internal no lugar de localhost no spring.datasource.url.

    spring.datasource.url=jdbc:mysql://host.docker.internal:3306/alurafood-pedidos?createDatabaseIfNotExist=true
    
  2. Verifique as Configurações de Rede do Docker: Se você estiver usando Docker Compose, pode ser necessário configurar uma rede para permitir que os containers se comuniquem entre si. Certifique-se de que o MySQL e o microserviço estão na mesma rede.

  3. Logs do Docker: Verifique os logs do container do MySQL para ver se há alguma mensagem de erro que possa indicar o que está errado. Você pode visualizar os logs usando:

    docker logs <container_id>
    

Espero que uma dessas sugestões ajude a resolver o problema de conexão.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.