希望能帮到你吧。。标题后半段是一个坑;
本文环境
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
希望能帮到你