nacos 注冊/配置 中心的安裝,使用


1,簡單安裝啟動

1,下載,安裝,打包

1, 源碼下載地址:https://gitee.com/mirrors/Nacos/tree/1.4.0
2, 打包指令:mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
3, 代碼最終生成的路徑:/Nacos/distribution/target/nacos-server-1.4.0/nacos

2,啟動

進入 bin 目錄
linux:sh startup.sh -m standalone
windows:cmd startup.cmd -m standalone
啟動后的訪問地址:http://10.131.11.42:8848/nacos/index.html
默認登入的賬號密碼:nacos/nacos

4,暫停

linux:sh shutdown.sh
windows:cmd shutdown.cmd

2,Docker 安裝,並持久化(推薦)

1,創建一個 Docker 網絡

docker network create --driver bridge --subnet=10.10.0.0/16 --gateway=10.10.0.1 mynet

2,安裝用於持久化的 mybatis 數據庫,對應的 docker-compose 如下

version: "3"
services:
  mysql:
    container_name: mysql          # 容器名
    image: nacos/nacos-mysql:5.7   # 鏡像名:nacos 包裝后的 5.7 版本 oracle
    environment:
      - MYSQL_ROOT_PASSWORD=920619 # root  賬號的密碼
      - MYSQL_DATABASE=nacos       # nacos 數據庫
      - MYSQL_USER=nacos           # nacos 數據庫賬號
      - MYSQL_PASSWORD=nacos       # nacos 數據庫密碼
    volumes:                       # 數據卷
      - /opt/docker/mysql:/var/lib/mysql
    ports:                         # 端口映射規則:宿主機ip:容器ip
      - "3306:3306"

# 配置默認使用的網絡上面創建的網絡
networks:
  default:
    external:
        name: mynet

3,安裝 nacos,對應的 docker-compose 如下

version: "3"
services:

  nacos:
    hostname: nacos                           # 域名
    container_name: nacos                     # 容器名
    image: nacos/nacos-server:latest          # 鏡像版本
    volumes:                                  # 數據卷,這里主要指定了 日志 和 配置文件的同步
      - /opt/docker/nacos/logs/:/home/nacos/logs
      - ./custom.properties:/home/nacos/init.d/custom.properties
    ports:                                    # 端口映射規則:宿主機ip:容器ip
      - "1061:8848"
      - "9555:9555"
    environment:
      - PREFER_HOST_MODE=hostname             # 運行模式:主機名,如果使用 ip 不需要此項
      - MODE=standalone                       # 單機運行
      - MYSQL_SERVICE_HOST=mysql              # 因為 和 mysql 使用的同一個網絡,可以通過容器名直接訪問
      - MYSQL_SERVICE_DB_NAME=nacos           # 數據庫名
      - MYSQL_SERVICE_PORT=3306               # 端口
      - MYSQL_SERVICE_USER=nacos              # 賬號
      - MYSQL_SERVICE_PASSWORD=nacos          # 密碼
    restart: always                           # 總是重啟

# 容器默認使用的網絡(這里配置的網絡要和 mysql 一致)
networks:
  default:
    external:
      name: mynet

4,上面使用到的 custom.properties 文件內容

management.endpoints.web.exposure.include=*

3,spring-cloud 連接

1,pom

<!-- 連接 nacos 注冊中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 連接 nacos 配置中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2,配置文件

bootstrap.yml

# Nacos 注冊中心地址
spring:
  cloud:
    nacos:
      discovery:
        # Nacos 注冊中心地址
        server-addr: 192.168.200.100:1061
        # Nacos 注冊中心分組
        group: dev
      config:
        # Nacoe 配置中心地址
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        # Nacoe 配置中心讀取的分組
        group: ${spring.cloud.nacos.discovery.group}
        # Nacoe 配置文件的名稱,優先級高於規則自動生成為文件名
        name: config
        # Nacoe 讀取的配置文件的后綴
        file-extension: yaml

application.yml

server:
  # 監聽的端口
  port: 80

spring:
  application:
    # 項目名稱
    name: sc-web-gateway

3,啟動類

package com.hwq.admin.back;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class AdminBackApp {

    public static void main(String[] args) {
        SpringApplication.run(AdminBackApp.class);
    }

}

4,動態配置

package com.hwq.admin.back.controller;

import com.hwq.common.vo.ResultVO;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
@RefreshScope   // 添加了這個注解,如果修改配置文件,@Value("${config.test}") 會實時改變
public class HomeController {

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

    @GetMapping("/home/config")
    public ResultVO<String> config() {
        return ResultVO.success("動態配置", name);
    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM