我正在尝试运行一个Spring Boot应用程序,其中数据库必须连接到Docker上的MySQL容器。我使用了以下代码和命令。
应用程序属性:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://mysqldb:3306/practice
spring.datasource.username=root
spring.datasource.password=CVnit1234!
spring.jpa.show-sql=true
spring.sql.init.platform=mysql
spring.sql.init.mode=always
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto=update
用于创建容器的命令&在Docker:上运行
从Docker Hub:中提取mysql映像
docker pull mysql
创建容器:
docker run --name mysqldb --network spring-net -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password MYSQL_DATABASE=practice -d mysql:latest
在执行此命令后,将创建一个容器,甚至它也可以正常工作。我能够登录到sqlbash并执行一些查询。
我尝试了使用多个jdbc URL:
- jdbc:mysql://mysqldb:3306/practice
- jdbc:mysql://mysqldb:3307/practice
- jdbc:mysql://mysqldb/practice
- jdbc:mysql://host.docker.internal:3306/practice
- jdbc:mysql://host.docker.internal:3307/practice
这些都不起作用,但我能够连接到localhost:3306
和localhost:3307
。
下面是我的春季启动代码。当我试图通过Spring Boot应用程序进行连接时,我收到了以下错误。
com.mysql.cj.jdbc.exceptions.CommunicationsException:通信链路故障
这里的问题是,当我试图连接到localhost时,应用程序已经启动并可以工作,但当我尝试连接到mysql容器时,我无法连接。
检查您的网络以确保应用程序网络连接到MySQL网络