docker nacos安装,注册,配置,测试

  • docker安装nacos
  • 控制台
  • 测试工程
  • 添加依赖
  • 编辑配置文件
  • bootstrap.yml
  • application.yml和application-dev
  • 添加nacos配置
  • 编写测试Controller
  • 接口测试


docker安装nacos

docker  run \
--name nacos-roswu -d \
-p 8848:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
--mount source=nacos-logs,destination=/home/nacos/logs \
--mount source=nacos-conf,destination=/home/nacos/conf \
nacos/nacos-server

运行上分命令,运行nacos容器,可以不提前pull镜像,也不需要提前创建nacos-logs和nacos-conf两个volume

使用docker logs nacos-roswu查看容器运行日志

docker 注册服务 docker容器注册nacos_ci

容器运行正常,接着可以到/var/lib/docker/volumes/nacos-conf/_data/var/lib/docker/volumes/nacos-logs/_data两个目录下,查看和编辑nacos容器内映射的日志和配置。这里就不展示了。

控制台

使用http://宿主机ip:8848/nacos访问nacos控制台,如果是云服务器的话,需要查看8848端口是否开发。用户名和密码均为nacos

docker 注册服务 docker容器注册nacos_spring_02


这里可以查看和监控配置中心和注册进来的服务信息。

测试工程

创建一个springboot工程,

添加依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.roswu.nacos</groupId>
    <artifactId>nacos-demo</artifactId>
    <version>1.0.0.1-SNAPSHOT</version>
    <name>nacos-roswu</name>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
    </properties>

    <dependencies>
        <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>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

编辑配置文件

bootstrap.yml,application.yml,application-dev.yml三个配置文件

bootstrap.yml

server:
  port: 8088

spring:
  application:
    name: nacosRoswu
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: nacos主机ip:8848 #配置Nacos地址
      config:
        server-addr: nacos主机ip:8848 #Nacos地址
        file-extension: yml #这里我们获取的yaml格式的配置

management:
  endpoints:
    web:
      exposure:
        include: '*'

application.yml和application-dev

application.yml和application-dev暂时就空着吧,nacos启动时需要加载bootstrap.yml中的系统级别配置,所有相关的系统配置都放到了该文件中,application是项目级别的配置。

添加nacos配置

配置管理–》配置列表–》新增,随便添加了一个以下配置

docker 注册服务 docker容器注册nacos_docker_03


这里要特别特别注意Data Id的命名,不能随意取,由这三部分拼接而成

docker 注册服务 docker容器注册nacos_docker_04

编写测试Controller

编写一个controller

@RefreshScope
@RestController
@RequestMapping("/test")
public class TestController {

    @Value("${test.hello}")
    private String hello;


    @GetMapping("/hello")
    public String hello(){
        return hello;
    }
}

这里也要注意@RefreshScope注解,因为hello是成员属性,初始化一次后,每次值属性不会主动变,使用该注解后,可以根据nacos配置动态更新。

接口测试

启动服务后,访问地址http://localhost:8088/test/hello

docker 注册服务 docker容器注册nacos_spring_05

更新nacos配置后,刷新,显示的值可以动态更新。