Docker中的Nacos与Docker中的MySQL不能连接,报错No DataSource set

这篇具有很好参考价值的文章主要介绍了Docker中的Nacos与Docker中的MySQL不能连接,报错No DataSource set。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

配置Nacos的MYSQL_SERVICE_HOST为docker宿主机的ip地址后,docker上的nacos不能访问到同一docker上的mysql。

报错信息如下:

No DataSource set at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:225) at com.alibaba.nacos.config.server.service.dump.ExternalDumpService.init(ExternalDumpService.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) ... 53 common frames omitted Caused by: java.lang.IllegalStateException: No DataSource set at org.springframework.util.Assert.state(Assert.java:73) at org.springframework.jdbc.support.JdbcAccessor.obtainDataSource(JdbcAccessor.java:77) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:452) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:462) at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:473) at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:480) at com.alibaba.nacos.config.server.service.repository.extrnal.ExternalStoragePersistServiceImpl.findConfigMaxId(ExternalStoragePersistServiceImpl.java:674) at com.alibaba.nacos.config.server.service.dump.processor.DumpAllProcessor.process(DumpAllProcessor.java:51) at com.alibaba.nacos.config.server.service.dump.DumpService.dumpConfigInfo(DumpService.java:282) at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:195) ... 61 common frames omitted

docker 同一网络的nacos突然无法访问mysql了,Docker,docker,mysql,容器,spring cloud,1024程序员节

报错信息显示没有配置数据源,说明数据库访问不到。

原因是在Docker中,连接不同的容器通常需要使用网络进行通信。Docker容器默认情况下运行在不同的网络隔离环境中,它们之间需要通过网络才能进行通信。

对于Nacos和MySQL的连接需要确保Nacos容器和MySQL容器运行在同一网络中。

按照以下步骤参考: 

  1. 创建一个新的Docker网络:docker network create mynetwork
  2. 将Nacos容器和MySQL容器都加入到新创建的网络中:docker network connect mynetwork nacos和docker network connect mynetwork mysql
  3. 也可以在创建容器之时即连接到docker网络,在命令中添加参数:--network mynetwork

然后在配置时还需要把Nacos的MYSQL_SERVICE_HOST参数设置为docker中的mysql的ip地址

docker network inspect mynetwork

此时会显示:

docker 同一网络的nacos突然无法访问mysql了,Docker,docker,mysql,容器,spring cloud,1024程序员节

将这个ip地址配置给MYSQL_SERVICE_HOST,重启nacos容器,成功:

docker 同一网络的nacos突然无法访问mysql了,Docker,docker,mysql,容器,spring cloud,1024程序员节文章来源地址https://www.toymoban.com/news/detail-761200.html

到了这里,关于Docker中的Nacos与Docker中的MySQL不能连接,报错No DataSource set的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包