当前位置: 首页 > 知识库问答 >
问题:

无法将mysql docker容器与spring boot应用程序链接-通信链接失败

别宏盛
2023-03-14

我是码头工人的新手。我用的是Spring boot微服务。它在我的本地机器上运行良好。现在,我需要为我的应用程序创建一个docker图像。它依赖于Mysql服务器。我使用docker-compose来创建我的容器。在运行我的自定义映像(spring boot应用程序)时,我收到一个通信链接失败错误。Mysql镜像独立运行良好。

我的 yml 文件 :

version: '2'

services:

  mysql-dev:
    image: mysql:5.7
    container_name: mysql-dev
    environment:
      MYSQL_ROOT_PASSWORD: "password"
      MYSQL_DATABASE: "onlinetutorialspoint"
    networks:
      - my_mysql_net
    ports:
      - 3306:3308

  spring_boot_db_service:
    depends_on:
      - mysql-dev
    image: spring_boot_db_service
    ports:
      - 8181:8181
    links:
      - mysql-dev:mysql
    networks:
      - my_mysql_net

networks:
  my_mysql_net:
    driver: bridge 

应用程序属性文件 :

db.driver: com.mysql.jdbc.Driver

spring.datasource.url = jdbc:mysql://mysql-dev:3308/onlinetutorialspoint?useSSL=false

spring.datasource.username = root

spring.datasource.password = password

完整的错误消息:

spring_boot_db_service_1|2019-01-28 13:34:06.955信息1--[
main]org.hibernate.cfg。环境:hh000206:Hibernate。在spring_boot_db_service_1|2019-01-28 13:34:07.000信息1-[main]o.hibernate.annotations.common中找不到属性。版本:HCANN00001:Hibernate Commons Annotations{5.0.1.Final}spring_boot_db_service_。驱动程序尚未从服务器接收到任何数据包。spring_boot_db_service_1|2019-01-28 13:34:08.443信息1--[
main]org.hibernate.dialogue。方言:hh000400:使用方言:org.hibernate.dialogue。MySQL5方言spring_boot_db_service_1|2019-01-28 13:34:08.459信息1-[main]o.h.e.e.i.LobCreatorBuilderImpl:HHH000422:禁用上下文LOB创建,因为连接为空spring_ boot_ db_service_1 | 2019-1-01-2813:34:08.921警告1-[
main]ConfigServletWebServerApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory。UnsatisfiedDependencyException:创建名为“dbServiceImpl”的bean时出错:通过字段“dbServiceDao”表示的未满足的依赖关系;嵌套的异常是org.springframework.beans.factory。UnsatisfiedPendencyException:创建名为“dbServiceDaoImpl”的bean时出错:通过字段“sessionFactory”表示的未满足的依赖关系;嵌套的异常是org.springframework.beans.factory。BeanCreationException:创建名为“sessionFactory”的bean时出错,该bean在类路径资源[com/htc/dbservice/configuration/DBConfiguration.class]中定义:初始化方法调用失败;嵌套的异常是org.hibernate。MappingException:无法获取org.hibernate.persister.entity的构造函数。SingleTableEntityPersister spring_boot_db_service_1|2019-01-28 13:34:08.923警告1--[
main]o.s.b.f.支持。DisposableBeanAdapter:在名为“eurekaRegistration”的bean上调用destroy方法“close”失败:org.springframework.beans.factory。BeanCreationNotAllowedException:创建名为“org.springframework.cloud.netflix.eureka”的bean时出错。EurekaClientAutoConfiguration$RefreshAbleEurekCalientConfiguration::当此工厂的单例正在销毁时,不允许创建单例bean(不要在销毁方法实现中从BeanFactory请求bean!)spring_boot_db_service_1|2019-01-28 13:34:08.926信息1---[main]o.apache.catalina.core。StandardService:停止服务[Tomcat]docker_spring_boot_db_service_1已退出,代码为1

共有1个答案

何聪
2023-03-14

你改变默认的mysql端口了吗?如果没有,你是指向错误的端口号。当您将端口映射到外部发布服务时,顺序是

<host-port>:<container-port>
services:   
   mysql-dev:  
     image: mysql:5.7  
     container_name: mysql-dev  
     environment:  
       MYSQL_ROOT_PASSWORD: "password"  
       MYSQL_DATABASE: "onlinetutorialspoint"  
     networks:  
       - my_mysql_net  
     ports:  
       - 3308:3306  

使用 docker-compose 并将两个服务连接到同一网络,您可以直接连接到容器,而无需将 mysql 端口发布到外部网络。尝试将指向 mysql-dev:3306 的 spring 应用更改为,或者尝试使用 spring_boot_db_service 连接到容器

docker-compose exec spring_boot_db_service bash  

并对数据库容器进行连接测试

 类似资料:
  • 当我的java spring应用程序尝试连接到数据库时,我会得到以下信息: spring应用程序中的连接url如下所示: 最后,docker图像-A: 你知道问题是什么吗?谢谢你!

  • 问题内容: 我使用Java从Mysql查询一些记录。但是在某些持续时间的查询中,我遇到了使查询失败的问题,而在其他查询中,它查询成功了。错误消息是下一个: 我尝试了一些方法,例如: 设置 在 添加 到我的连接网址 但什么也没发生。 我的环境是: Mysql:5.5.3-m3-log源代码分发 的Java:1.6.0_16 JDK:HotSpot(TM)64位服务器VM(内部版本14.2-b01,混

  • 问题内容: 我正在努力使数据库与Java程序进行通讯。 有人可以使用JDBC给我一个快速而肮脏的示例程序吗? 我收到一个非常严重的错误: 测试文件的内容: 问题答案: 所以,你有一个 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败 java.net.ConnectException:连接被拒绝 我引用了这个答案,其中还包

  • 我正在使用hibernate.cfg运行Spring MVC应用程序,如下所示: 当我在本地环境中运行应用程序时,它运行起来没有任何问题。但在服务器上,它给出的异常为:

  • 问题内容: 到目前为止,我已经成功地使用Mesos,Marathon和Docker来管理服务器群以及我放置在其上的容器。但是,我现在想走得更远,开始做一些事情,例如自动将haproxy容器链接到启动的每个主要docker服务,或者提供其他基于链接的守护程序和容器化服务,这些服务仅对单个父容器可用。 通常,我会先使用一些名称启动帮助程序服务,然后在启动真实服务时将其链接到帮助程序,然后一切都会好起来

  • 我正在试图弄清楚为什么我的应用程序连接到我的数据库有麻烦,只有在mac OS上,所以我正在使用一个小程序运行在OS上的终端上,看看是什么原因造成的。 似乎是主机名导致了问题,但我的服务提供商不能给我一个ip地址,以尝试它是否修复了我的问题。有没有人对此有一个解决办法或者我可以尝试什么的想法?非常感谢你抽出时间。 这是连接程序。数据库用户只能选择,主机名是正确的,密码也是正确的。这个问题只发生在MA