基本概念和安装启动
概念
Nacos(官方网站:nacos.io)是一个易于使用的平台,专为动态服务发现、配置和服务管理而设计。它帮助您轻松构建云原生应用程序和微服务平台。
Nacos提供四个主要功能:
服务发现和服务健康检查
动态配置管理
动态 DNS 服务
服务和元数据管理
启动Nacos
TIP
- 启动nacos有
单机模式运行
和集群模式
,今天只使用单机模式
我们使用Docker
来搭建Nacos
服务,更多配置参考quick-start-docker
服务目录如下:
shell
.
├── .env # 环境变量文件,用于standalone-mysql-8.yaml读取环境变量
├── env
│ ├── mysql.env # mysql 环境变量
│ └── nacos-standlone-mysql.env # nacos相关环境变量
├── image
│ └── mysql8
│ └── Dockerfile # 启动nacos依赖的mysql镜像的Dockerfile
└── standalone-mysql-8.yaml # docker-compose 启动文件配置
.env
yaml
NACOS_VERSION=v2.4.0.1
WARNING
- 如果用的版本比
v2.4.0.1
低,Mac Apple
内核可能报错
shell
no matching manifest for linux/arm64/v8 in the manifest list entries
解决方法如下:
- 可以在
docker-compose.yaml
中添加platform: linux/x86_64
,(这里我的启动配置是standalone-mysql-8.yaml
),参考链接
yaml
nacos:
image: nacos/nacos-server:${NACOS_VERSION}
container_name: NACOS_STANDALONE_MYSQL
restart: always
platform: linux/x86_64
- 或者
.env
文件指定使用slim
版本镜像,参考链接
yaml
NACOS_VERSION=v2.3.1-slim
env/mysql.env
yaml
MYSQL_ROOT_PASSWORD=root # root用户密码
MYSQL_DATABASE=nacos_devtest # 启动nacos后,创建的数据库名称
MYSQL_USER=nacos # 创建的用户名称
MYSQL_PASSWORD=nacos # 创建的nacos用户密码
LANG=C.UTF-8
env/nacos-standlone-mysql.env
yaml
PREFER_HOST_MODE=hostname # 优先主机模式
MODE=standalone # 当前模式
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=mysql
MYSQL_SERVICE_DB_NAME=nacos_devtest # mysql 数据库名称
MYSQL_SERVICE_PORT=3306 # 数据库端口
MYSQL_SERVICE_USER=nacos # 数据库用户名
MYSQL_SERVICE_PASSWORD=nacos # 数据库密码
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
NACOS_AUTH_IDENTITY_KEY=2222 # 鉴权用的先忽略
NACOS_AUTH_IDENTITY_VALUE=2xxx # 鉴权用的先忽略
NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 # 鉴权用的先忽略
image/mysql8/Dockerfile
yaml
FROM mysql:latest
# 将 https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql
# 这个远程文件下载并添加到镜像中的 /docker-entrypoint-initdb.d/ 目录下,并将其命名为 nacos-mysql.sql
ADD https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql /docker-entrypoint-initdb.d/nacos-mysql.sql
# 将 /docker-entrypoint-initdb.d/nacos-mysql.sql 文件的所有者和所属组更改为 mysql 用户和 mysql 组
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/nacos-mysql.sql
# 对外暴露 3306端口
EXPOSE 3306
# 启动 MySQL 服务器,并设置字符集为 utf8mb4 和排序规则为 utf8mb4_unicode_ci
CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
standalone-mysql-8.yaml
yaml
version: "2.6"
services:
mysql:
container_name: MYSQL_NACOS
restart: always
build:
context: .
dockerfile: ./image/mysql8/Dockerfile
env_file:
- ./env/mysql.env
volumes:
- ./mysql:/var/lib/mysql
ports:
- "1004:3306"
# 通过命令检查容器是否健康运行
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
interval: 5s
timeout: 10s
retries: 10
nacos:
image: nacos/nacos-server:${NACOS_VERSION}
container_name: NACOS_STANDALONE_MYSQL
restart: always
env_file:
- ./env/nacos-standlone-mysql.env
volumes:
- ./standalone-logs/:/home/nacos/logs
ports:
- "8848:8848"
- "9848:9848"
depends_on:
mysql:
condition: service_healthy
启动nacos
shell
docker-compose -f standalone-mysql-8.yaml up -d
然后访问http://localhost:8848/nacos
就可以看到主界面
此时可以看到主界面会有一个提示
WARNING
- 当前集群没有开启鉴权,请参考文档开启鉴权~
开启鉴权
详细内容参考Authentication
修改
env/nacos-standlone-mysql.env
,修改/添加下面的字段
yaml
# 其他字段
# xxx
NACOS_AUTH_ENABLE=true
NACOS_AUTH_IDENTITY_KEY=ZjcqSyNiIStfIjpNTEQ4OXkyM2tqYmtqQVMoKl5ZQCNSSktCTkNVKldUKiYjXkhUUEdJTm91NDUzeTUz
NACOS_AUTH_IDENTITY_VALUE=Zmprc2IwJiomIyVCSkJGSSZXVDNia2p0MjNpdTU2dHlzamtkYmdoZWdyM3QzNHQzNA==
NACOS_AUTH_TOKEN=OSgsazJIODlVODJhLXozMzM1aGpzMSpeJisyYlZIX0A4ODIxQkZLREYtKSMqJQ==
WARNING
NACOS_AUTH_IDENTITY_KEY
、NACOS_AUTH_IDENTITY_VALUE
、NACOS_AUTH_TOKEN
要使用Base64
编码的字符串,字符串长度最少32
位c
然后重启docker
服务
shell
docker-compose -f xxx.yml down
docker-compose -f xxx.yml up -d
然后清空http://localhost:8848/nacos
页面的localStorage
的值,刷新页面,会出现登录界面
默认:用户名:
nacos
,密码:nacos
登录成功就可以啦