nacos(docker部署)+springboot集成

发布于:2024-05-01 ⋅ 阅读:(33) ⋅ 点赞:(0)

说明

  1. nacos容器部署采用1Panel运维面板,进行部署操作,简化操作
  2. 注意提前安装好1Panel和配置完成docker镜像加速(可以在1Panel运维面板 容器面板中配置官方推荐的加速配置)

  1. 防火墙配置,请开放8848和9848,如果nacos部署时使用了不同的外部端口,请开放相应端口
  2. 推荐在1panel防火墙管理中进行操作和配置
    • 如果服务器没有防火墙配置,可以选择直接进入nacos容器部署步骤操作
      在这里插入图片描述
    • 如果存在防火墙,请开放8848和9848端口
      在这里插入图片描述

nacos容器部署

  1. 打开1panel运维面板并登录,选择应用商店点击更多,选择中间件,即可看到nacos服务应用
    在这里插入图片描述

初始化配置

  1. 点击安装,配置容器的初始化配置,下面详细重要讲解配置项的含义和作用
    • 名称:保持默认即可
    • 版本:目前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
  • 最后,点击右下角确认按钮,进行容器的部署

访问

  1. 访问http://IP:8848/nacos/,即可访问nacos页面,如果开启鉴权,会提示权限认证失败
    在这里插入图片描述
  2. 点击确定,使用部署时配置的用户名和密码,登录nacos即可
  3. 初次登录nacos,使用默认的明亮主题,喜欢黑色主题的朋友,可以现在设置中心,设置黑色主题,同时还可以修改系统语言
    在这里插入图片描述

权限控制

  1. 在权限模块中可以修改用户和角色权限等相关的设置,后续springboot项目可以使用新增的用户连接nacos,但注意需要分配好需要的权限
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

命名空间设置

  • namespace来实现环境隔离功能(如生产环境、开发环境、测试环境的隔离)
  • 更详细的内容参看《注册中心Eureka&Nacnos》
  • 这里作者创建一个名为train的命名空间,用户一会儿的测试
    在这里插入图片描述

新建配置文件

  1. 在配置管理的命名空间train下创建member-dev.yaml的配置文件,内容如下
    在这里插入图片描述

springboot配置nacos

添加依赖

  1. 导入和nacos版本兼容的maven依赖,具体的方法时打开alibaba nacos配置案例地址,这使用nacos2.3.2演示地址即可看到springboot项目需要的内容,将其复制进项目的pom文件

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    

    在这里插入图片描述

  2. 添加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>
  1. 在项目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

  1. 创建测试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);
        }
    }
    
  2. 最后访问controller接口ip:/hello即可,验证是否成功

  • 一般,成功后可以在nacos看到注册的服务,这里作者就不再复现最终的结果了!详细认真实践和总结,尽管中间会遇到其他的问题,最后一定会成功!

网站公告

今日签到

点亮在社区的每一天
去签到