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