😦之前在windows本地启动的nacos2.3.0版本,今天想着部署到我的docker中,拉取镜像启动一气呵成,浏览器访问,没问题,但是忘记了开启鉴权。于是打开nacos官方文档,看到了这段话
于是照猫画虎,添加了-e NACOS_AUTH_ENABLE=true \
参数,启动!然而没十几秒又宕机了😭。于是百度,在CSDN找到一个文章,说是启动容器后,要修改配置文件,这个我熟悉,之前在windows电脑上不就是这样配置的么,然而我发现,如果我加了官网要求的启动参数,也就是NACOS_AUTH_ENABLE=true 就无法访问容器内的文件,如果我不加,即使修改了application.properties文件也无法正常启动nacos.
😤就在我气急败坏之际,看到了官方文档最上方的参数列表
抱着试一试的态度,我把这些参数作为容器的启动参数,启动!,又失败了😭,这时我想起看日志了,打开日志文件,如下图,the secret key must be encoded by base64
,翻译过来就是“密钥必须由 base64 编码”,也就是那个NACOS.CORE.AUTH.PLUGIN.NACOS.TOKEN.SECRET.KEY
,我光顾着密钥长度了!
随便找个base64编码网站生成一串编码复制到我的启动参数后面,启动!成功!😁
最后,把我的启动命令贴出来,隐私信息用xxxxx代替
docker run -d --name nacos-server -p 8848:8848 -p 9848:9848 \
-e MODE=standalone \
-e NACOS_AUTH_ENABLE=true \
-e NACOS.CORE.AUTH.PLUGIN.NACOS.TOKEN.SECRET.KEY="SecretKeyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-e NACOS.CORE.AUTH.SERVER.IDENTITY.KEY=xxxx \
-e NACOS.CORE.AUTH.SERVER.IDENTITY.VALUE=xxxx \
-e JVM_XMS=512m \
-e JVM_XMX=512m \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=xxxxx \
-e MYSQL_SERVICE_PORT=xxxx \
-e MYSQL_SERVICE_DB_NAME=xxxx \
-e MYSQL_SERVICE_USER=xxx \
-e MYSQL_SERVICE_PASSWORD=xxxx \
-v /logs/nacos:/home/nacos/logs \
nacos/nacos-server:v2.3.0
🙂总结;目前试了多次,只能把配置信息放在启动参数中,不需要修改nacos的配置文件。还有,养成看日志的习惯。
nacos部署参考文档:blog.csdn.net/u013737132/…
后续更新:启动微服务后控制台循环报错如下图
解决方案:除了在yml文件中配置nacos地址,用户名,密码之外,需要额外再新建一个bootstrap.properties文件,内容如下
application.yml
spring:
cloud:
nacos:
discovery:
server-addr: xxx.xxx.xxx.xxx:8848
username: xxx
password: xxxxxx
application:
name: xxxx
bootstrap.properties
spring.cloud.nacos.config.server-addr=xxx.xxx.xxx.xxx:8848
spring.application.name=xxxx