M1 mac使用docker搭建nacos mysql持久化-2022-01 Nacos Server did not start because dumpservice bean construct

希望能帮到你吧。。标题后半段是一个坑;
本文环境
m1 mac
docker
nacos 2.0.3
mysql 8.0

docker pull nacos/nacos-server
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
这个M1报错  , 因为官方没出arm的镜像,总之就是跑不起来;

下面这个可以,必须要带版本号,不然找不着

docker pull zhusaidong/nacos-server-m1:2.0.3 

docker run --env MODE=standalone --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849  zhusaidong/nacos-server-m1:2.0.3
启动后要稍微过一会,访问如下路径登录,默认账号密码 nacos nacos

http://127.0.0.1:8848/nacos/index.html
这个可以访问,然后基本的单机环境就可以玩了

问题出在集群持久化将存储转移到外置mysql上
真的是个深坑

如下是集群外置mysql环境配置

  • 1.初始化mysql数据库,数据库初始化文件:nacos-mysql.sql
  • 2.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql
2.0.3自带的那个sql叫什么schem。。那个mysql语法不对,不能直接用, 建议去上面这个路径copy
这是官方的sql脚本,你先自己建一个数据库,数据库名要跟后续在nacos中配置的数据库名一致;
然后执行这个脚本,建表,插入默认用户账号密码等等;

之后你需要配置nacos的配置文件

如下是我的配置,直接往application.properties里面贴,application.properties上面其他东西不需要动;
ip换成你自己的,数据库名也换成你自己的,还有账号密码;
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.10.78:3306/nacos_config?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&serverTimezone=UTC&useSSL=false
db.user=root
db.password=root

这里你可能会遇到一个报错,如下

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memoryMonitor' defined in URL [jar:file:/home/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-config-2.0.3.jar!/com/alibaba/nacos/config/server/monitor/MemoryMonitor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'asyncNotifyService': Unsatisfied dependency expressed through field 'dumpService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ErrCode:500, ErrMsg:Nacos Server did not start because dumpservice bean construction failure :
No DataSource set
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)

总之结果就是,你按照步骤做了,但是DataSource就是找不着;
我大概都查过了
比较多的是加时区参数和超时参数给个10倍,据说是mysql8和nacos连会变慢。。这个我倒是没感觉。我也不是因为这个。你可以根据你的情况去试;

给你个高频指令,你可能刚好要用呢

docker restart nacos
docker exec  -it nacos /bin/bash

我的环境出现这个问题的原因是:
docker装的nacos镜像中的数据库配置,如果配置成127.0.01或者localhost,它会去自己容器内部找3306,指定找不着。。。所以就找不着;
解决办法是配置成宿主机的ip 即上文中我的宿主机ip就是192.168.10.78
mac可以自己设置静态ip,这个你就自己查查吧,很简单,临时用不配置静态ip的话你就ifconfig ipaddr看看宿主机ip,配上就好了

最后
docker restart nacos
http://127.0.0.1:8848/nacos/#/login
希望能帮到你
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值