文章目录
- 说明
- 零
- nacos容器部署
- 初始化配置
- 高级配置部分
- 访问
- 权限控制
- 命名空间设置
- 新建配置文件
- springboot配置nacos
- 添加依赖
- 编写测试controller
说明
- nacos容器部署采用1Panel运维面板,进行部署操作,简化操作
- 注意提前安装好1Panel和配置完成docker镜像加速(可以在1Panel运维面板 容器面板中配置官方推荐的加速配置)
零
- 防火墙配置,请开放8848和9848,如果nacos部署时使用了不同的外部端口,请开放相应端口
- 推荐在1panel防火墙管理中进行操作和配置
- 如果服务器没有防火墙配置,可以选择直接进入nacos容器部署步骤操作
- 如果存在防火墙,请开放8848和9848端口
- 如果服务器没有防火墙配置,可以选择直接进入nacos容器部署步骤操作
nacos容器部署
- 打开1panel运维面板并登录,选择应用商店点击更多,选择中间件,即可看到nacos服务应用
初始化配置
- 点击安装,配置容器的初始化配置,下面详细重要讲解配置项的含义和作用
- 名称:保持默认即可
- 版本:目前docker版本为2.3.2,可以根据自己需求进行选择
- 开启鉴权:可以选择开启和关闭,默认未关闭状态,如果开启在使用springboot连接nacos时,需要填写username和password
- Nacos运行端口:配置nacos docker服务应用应用的外部端口,默认未8848和容器内部的端口一致。可以自定义修改,但是要注意开放防火墙端口,如果使用云服务,请在安全组中开放自定义的外部映射运行端口。
- Nacos身份验证密钥键:相当于username,在开启鉴权后,用于用户权限鉴别
- Nacos身份验证密钥值:相当于password,在开启鉴权后,用于用户权限鉴别
- Nacos身份验证令牌:
nacos.token.secret.key
的值,使用base64(https://base64.us/)编码后的内容,建议字符长度32位以上。注意保存,后面项目中配置需要 - 多网卡模式下可以指定IP:可以留空,非必须配置
- 有关JVM相关的参数可以保持默认,最优化的配置,请结合自身服务器配置和项目需求进行配置
高级配置部分
- 容器名称:建议自定义一个醒目的名称,特别是在服务器上部署的容器比较多的情况下
- 外部端口访问:请务必勾选
- 编辑compose文件:勾选后弹出展示具体的compose文件的配置内容,可以首选修改添加
- ./data/conf:/home/nacos/conf
,最终的配置如下
services:
nacos:
image: nacos/nacos-server:v2.3.2
container_name: ${CONTAINER_NAME}-standalone
restart: always
environment:
- NACOS_AUTH_ENABLE=${NACOS_AUTH_ENABLE:-FALSE}
- PREFER_HOST_MODE=hostname
- MODE=standalone
- JVM_XMS=${JVM_XMS}
- JVM_XMX=${JVM_XMX}
- JVM_XMN=${JVM_XMN}
- JVM_MS=${JVM_MS}
- JVM_MMS=${JVM_MMS}
- NACOS_AUTH_IDENTITY_KEY=${NACOS_AUTH_IDENTITY_KEY}
- NACOS_AUTH_IDENTITY_VALUE=${NACOS_AUTH_IDENTITY_VALUE}
- NACOS_AUTH_TOKEN=${NACOS_AUTH_TOKEN}
- NACOS_SERVER_IP=${NACOS_SERVER_IP}
volumes:
- ./data/logs:/home/nacos/logs
- ./data/data:/home/nacos/data
- ./data/conf:/home/nacos/conf
ports:
- "${PANEL_APP_PORT_HTTP}:8848"
- "${PANEL_APP_PORT_COMMUNICATION}:9848"
networks:
1panel-network:
external: true
- 最后,点击右下角确认按钮,进行容器的部署
访问
- 访问
http://IP:8848/nacos/
,即可访问nacos页面,如果开启鉴权,会提示权限认证失败
- 点击确定,使用部署时配置的用户名和密码,登录nacos即可
- 初次登录nacos,使用默认的明亮主题,喜欢黑色主题的朋友,可以现在设置中心,设置黑色主题,同时还可以修改系统语言
权限控制
- 在权限模块中可以修改用户和角色权限等相关的设置,后续springboot项目可以使用新增的用户连接nacos,但注意需要分配好需要的权限
命名空间设置
- namespace来实现环境隔离功能(如生产环境、开发环境、测试环境的隔离)
- 更详细的内容参看《注册中心Eureka&Nacnos》
- 这里作者创建一个名为
train
的命名空间,用户一会儿的测试
新建配置文件
- 在配置管理的命名空间
train
下创建member-dev.yaml
的配置文件,内容如下
springboot配置nacos
添加依赖
-
导入和nacos版本兼容的maven依赖,具体的方法时打开alibaba nacos配置案例地址,这使用nacos2.3.2演示地址即可看到springboot项目需要的内容,将其复制进项目的pom文件
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
-
添加nacos maven依赖和读取bootstrap文件的配置
<!-- 读取bootstrap文件 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 在项目
resources
目录下,创建bootstrap.yml
文件,内容如下# 注册中心名称 spring: application: name: xxx #比如 member 和配置文件member-dev.yml前缀对应 # 启动环境 nacos会根据环境读不同的配置dataI profiles: active: xxx #比如 dev 注意与前面中nacos创建的配置文件中后缀匹配如文件名称为member-dev.yml cloud: nacos: config: namespace: xxx #比如 train 和nacos中配置的命名空间对应 server-addr: ip:8848 file-extension: yaml #也可以采用properties文件格式 secret-key: xxxxx # SecretKey:服务部署时的 Nacos身份验证令牌 username: xxx # nacos开启鉴权,需要配置 就是前面的Nacos身份验证密钥键 否则,无需配置 password: xxx # nacos开启鉴权,需要配置 就是前面的Nacos身份验证密钥值 否则,无需配置 discovery: namespace: train server-addr: ip:8848 username: xxx # nacos开启鉴权,需要配置 就是前面的Nacos身份验证密钥键 否则,无需配置 password: xxx # nacos开启鉴权,需要配置 就是前面的Nacos身份验证密钥键 否则,无需配置
编写测试controller
- 创建测试controller
import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.core.env.Environment; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RefreshScope public class TestController { @Value("${nacos.test}") private String testNacos; @Resource Environment environment; @GetMapping("/hello") public String hello() { String port = environment.getProperty("local.server.port"); return String.format("Hello %s! 端口:%s", testNacos, port); } }
- 最后访问controller接口
ip:/hello
即可,验证是否成功
- 一般,成功后可以在nacos看到注册的服务,这里作者就不再复现最终的结果了!详细认真实践和总结,尽管中间会遇到其他的问题,最后一定会成功!