如何使用Spring Boot项目连接到Docker上的MySQL容器



我正在尝试运行一个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:3306localhost:3307

下面是我的春季启动代码。当我试图通过Spring Boot应用程序进行连接时,我收到了以下错误。

com.mysql.cj.jdbc.exceptions.CommunicationsException:通信链路故障

这里的问题是,当我试图连接到localhost时,应用程序已经启动并可以工作,但当我尝试连接到mysql容器时,我无法连接。

检查您的网络以确保应用程序网络连接到MySQL网络

最新更新