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