踩坑nacos2.3.0 docker部署开启鉴权

843 阅读2分钟

😦之前在windows本地启动的nacos2.3.0版本,今天想着部署到我的docker中,拉取镜像启动一气呵成,浏览器访问,没问题,但是忘记了开启鉴权。于是打开nacos官方文档,看到了这段话

image.png

于是照猫画虎,添加了-e NACOS_AUTH_ENABLE=true \ 参数,启动!然而没十几秒又宕机了😭。于是百度,在CSDN找到一个文章,说是启动容器后,要修改配置文件,这个我熟悉,之前在windows电脑上不就是这样配置的么,然而我发现,如果我加了官网要求的启动参数,也就是NACOS_AUTH_ENABLE=true 就无法访问容器内的文件,如果我不加,即使修改了application.properties文件也无法正常启动nacos.

image.png

😤就在我气急败坏之际,看到了官方文档最上方的参数列表

image.png

抱着试一试的态度,我把这些参数作为容器的启动参数,启动!,又失败了😭,这时我想起看日志了,打开日志文件,如下图,the secret key must be encoded by base64,翻译过来就是“密钥必须由 base64 编码”,也就是那个NACOS.CORE.AUTH.PLUGIN.NACOS.TOKEN.SECRET.KEY,我光顾着密钥长度了!

image.png

随便找个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/…

后续更新:启动微服务后控制台循环报错如下图

image.png

解决方案:除了在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