Communications Link Failure in Spring Boot, MySQL, Docker, and Hibernate
Problem:
When running a Spring Boot application with Hibernate and MySQL using Docker Compose, an error occurs with the following message:
Communications link failure java.net.ConnectException: Connection refused
Details:
The error occurs when the application tries to establish a connection to the MySQL database. The connection URL in jdbc:mysql://localhost/database refers to the local host, which is not the correct address within the Docker container.
Solution:
To resolve this issue, the connection URL in the JDBC connection and the Spring Boot configuration (application.properties) should be updated to point to the MySQL container's address.
JDBC Connection:
<code class="java">private Connection createConnection() throws SQLException { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); String mysqlUrl = "jdbc:mysql://docker-mysql:3306/database?autoReconnect=true&useSSL=false"; Connection connection = DriverManager.getConnection(mysqlUrl, "root", "root"); return connection; }</code>
Spring Boot Configuration (application.properties):
<code class="properties">spring.datasource.url=jdbc:mysql://docker-mysql:3306/database?autoReconnect=true&useSSL=false spring.datasource.username=root spring.datasource.password=root</code>
Docker Compose Configuration (docker-compose.yml):
Ensure that the Docker Compose configuration correctly defines the port mapping for the MySQL container:
<code class="yaml">services: docker-mysql: image: mysql:5.7 ports: - 3307:3306</code>
and that the application container depends on the MySQL container:
<code class="yaml">app: image: app:latest ports: - 8091:8091 depends_on: - docker-mysql</code>
The above is the detailed content of How to Fix 'Communications Link Failure” Errors When Connecting to MySQL in a Dockerized Spring Boot Application?. For more information, please follow other related articles on the PHP Chinese website!