1. Docker安装Naco
官方文档https://nacos.io/zh-cn/docs/quick-start-docker.html,然而自己部署的时候遇到了“Database not set”的问题。有可能是因为环境中已经部署了3306的mysql服务导致的。(虽然我尝试修改了naco的docker-compose,但是未果,遂放弃)
安装过程参考文章:https://blog.csdn.net/ilvjiale/article/details/129417768
docker pull nacos/nacos-servermkdir -p /mydata/nacos/logs/ #新建logs目录
mkdir -p /mydata/nacos/conf/ #新建conf目录docker run -p 8848:8848 --name nacos -d nacos/nacos-serverdocker cp nacos:/home/nacos/logs/ /mydata/nacos/
docker cp nacos:/home/nacos/conf/ /mydata/nacos/docker rm -f nacos## 随后去数据库中创建表nacos_config,并执行下列sql
## https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql## 然后重启
docker run -d --name nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -v /mydata/nacos/logs/:/home/nacos/logs -v /mydata/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server
修改配置文件
# 在宿主机中修改application.properties文件
vim /mydata/nacos/conf/application.properties# 修改下列内容
spring.datasource.platform=mysql
db.num=1
## 这里我是用docker的内置网络进行DNS解析,因此使用的image的名字mysql_server来进行关联的
db.url.0=jdbc:mysql://mysql_server:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
进入页面
http://ip:8848/nacos/index.html
2. 鉴权
直接访问http://ip:8848/nacos/index.html是裸奔,因此要配置账号密码
参考https://nacos.io/zh-cn/docs/v2/guide/user/auth.html,https://juejin.cn/post/7281201055627493413
### If turn on auth system:
nacos.core.auth.enabled=false### If turn on auth system:
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
然后再去http://ip:8848/nacos/index.html就有密码了。默认是nacos/nacos
3. 自己写服务的操作
SpringBoot
Flask
通过request的方法实现注册
import requests
from flask import Flaskapp = Flask(__name__)# 服务注册
def service_register():data = {"serviceName": "pythonservice","ip": '127.0.0.1','port': 5001,'namespaceId':'XXXXX','USERNAME':'nacos','PASSWORD':'nacos'}url = "http://127.0.0.1:8848/nacos/v1/ns/instance"res = requests.post(url, data=data)print(res.text, type(res))print("完成注册")if __name__ == '__main__':service_register()app.run('127.0.0.1', 5001)
通过sdk的方式完成注册(由于python的库版本太老,并且不支持新版naco,因此放弃)