Spring Boot、MySQL、Docker、Hibernate 通信链路失败
问题:
运行时使用 Docker Compose 运行具有 Hibernate 和 MySQL 的 Spring Boot 应用程序时,会出现错误并显示以下消息:
Communications link failure java.net.ConnectException: Connection refused
详细信息:
当应用程序尝试建立一个连接到 MySQL 数据库。 jdbc:mysql://localhost/database 中的连接 URL 指的是本地主机,这不是 Docker 容器内的正确地址。
解决方案:
解决此问题问题,应更新 JDBC 连接和 Spring Boot 配置 (application.properties) 中的连接 URL 以指向 MySQL 容器的地址。
JDBC 连接:
<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 配置(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 配置(docker-compose.yml):
确保Docker Compose 配置正确定义了 MySQL 容器的端口映射:
<code class="yaml">services: docker-mysql: image: mysql:5.7 ports: - 3307:3306</code>
并且应用程序容器依赖于 MySQL 容器:
<code class="yaml">app: image: app:latest ports: - 8091:8091 depends_on: - docker-mysql</code>
以上是如何修复在 Docker 化的 Spring Boot 应用程序中连接到 MySQL 时出现“通信链路故障”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!