java.net.UnknownHostException 来自 Spring Boot 应用程序的 dockerized mysql
Posted
技术标签:
【中文标题】java.net.UnknownHostException 来自 Spring Boot 应用程序的 dockerized mysql【英文标题】:java.net.UnknownHostException dockerized mysql from spring boot application 【发布时间】:2019-01-02 18:59:51 【问题描述】:我有一个 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
此处配置应用程序属性文件;
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
当我尝试在 IDE 上启动我的 Spring Boot 应用程序时 我遇到过
java.net.UnknownHostException: mysql-standalone
我的属性文件中是否缺少任何配置?
【问题讨论】:
【参考方案1】:由于这不是容器到容器的通信,您必须将 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
^^^^^^^^^^^^
并指向localhost
:
spring.datasource.url = jdbc:mysql://localhost:3306/test
【讨论】:
【参考方案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
【讨论】:
以上是关于java.net.UnknownHostException 来自 Spring Boot 应用程序的 dockerized mysql的主要内容,如果未能解决你的问题,请参考以下文章