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);
    }

}

posted on 2020-12-07 16:10  被遗忘的优雅  阅读(2251)  评论(0编辑  收藏  举报