gpt4 book ai didi

java - 将 Spring/Hibernate 应用程序连接到 Docker 中运行的 Mysql

转载 作者:行者123 更新时间:2023-12-02 01:43:53 25 4
gpt4 key购买 nike

我有一个使用 h2 数据库运行的 Spring/Hibernate 应用程序。现在,我需要让它连接到在 Docker 容器上运行的 Mysql 数据库。

Mysql容器直接源自Dockerhub页。

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=test -d mysql:latest

在我的 application.properties 中我有:

spring.jpa.hibernate.ddl-auto=create
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=my-secret-pw

启动后立即出现此异常

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-java-8.0.13.jar:8.0.13] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.13.jar:8.0.13] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) ~[mysql-connector-java-8.0.13.jar:8.0.13] at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:455) ~[mysql-connector-java-8.0.13.jar:8.0.13] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) ~[mysql-connector-java-8.0.13.jar:8.0.13]

Mysql 容器似乎工作正常。我可以进入并看到它正在运行。

那么,问题可能出在哪里?

最佳答案

您必须从 Docker 实例发布端口 3306 才能从外部连接到它。

docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=test -d mysql:latest

关于java - 将 Spring/Hibernate 应用程序连接到 Docker 中运行的 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53992059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com