【问题标题】:java.net.UnknownHostException dockerized mysql from spring boot applicationjava.net.UnknownHostException 来自 Spring Boot 应用程序的 dockerized mysql
【发布时间】: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

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

【问题讨论】:

    标签: java mysql spring docker spring-boot


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-24
        • 2017-12-29
        • 2019-11-06
        • 2015-12-03
        • 2021-01-29
        • 2021-12-03
        • 2019-12-04
        • 1970-01-01
        相关资源
        最近更新 更多