Spring Boot应用程序中的java.net.UnknownHostException dockerized mysql

Ugu*_*tun 4 java mysql spring docker spring-boot

我有一个Spring Boot应用程序和dockerized mysql db。我的Docker容器启动了,下面是docker ps命令的结果。

cf7936857c6f        mysql:5.6           "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes        3306/tcp            mysql-standalone
Run Code Online (Sandbox Code Playgroud)

应用程序属性文件配置在这里;

spring.datasource.url = jdbc:mysql:// mysql-standalone:3306 / test

spring.datasource.username = sa

spring.datasource.password =密码

我已经像这样运行mysql docker容器

docker run --name mysql-standalone -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test -e MYSQL_USER=sa -e MYSQL_PASSWORD=password -d mysql:5.6
Run Code Online (Sandbox Code Playgroud)

当我尝试在IDE上启动spring boot应用程序时,我遇到了

java.net.UnknownHostException:mysql独立

我的属性文件中是否缺少任何配置?

Rob*_*ert 8

由于这不是容器到容器的通信,因此必须将MySQL端口绑定到主机中的端口:

docker run -p 3306:3306 --name mysql-standalone -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test -e MYSQL_USER=sa -e MYSQL_PASSWORD=password -d mysql:5.6
           ^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

并指向localhost

spring.datasource.url = jdbc:mysql://localhost:3306/test
Run Code Online (Sandbox Code Playgroud)


sam*_*rav 2

运行 mysql 容器,暴露端口,如下所示。

docker run --name mysql-standalone -e MYSQL_ROOT_PASSWORD=密码 -e MYSQL_DATABASE=test -e MYSQL_USER=sa -e MYSQL_PASSWORD=密码 -p 3306:3306 -d mysql:5.6

在你的 spring bootapplication.properties文件中,修改如下。

spring.datasource.url = jdbc:mysql://localhost:3306/test?useSSL=false

不要忘记添加useSSL=false,否则您可能会收到以下错误。

Spring Boot: Jdbc javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
Run Code Online (Sandbox Code Playgroud)