1、安装nacos
1.拉取镜像
docker pull nacos/nacos-server
2.运行容器
docker run \
--name nacos -d \
-p 8848:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /mydata/nacos/logs:/home/nacos/logs \
-v /mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
nacos/nacos-server
3.设置开机自动启动
docker update --restart=always nacos
安装后nacos访问地址:http://xxx.xxx.x.x:8848/nacos/
2、nacos注册和配置中心
首先新建命名空间
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.1</version>
</dependency>
<!-- 向注册中心进行服务注册 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency>
启动类加 @EnableDiscoveryClient 注解
@EnableDiscoveryClient
@SpringBootApplication
public class NacosRegisterApplication {
public static void main(String[] args) {
SpringApplication.run(NacosRegisterApplication.class, args);
}
}
bootstrap.yml
server:
port: 3377
spring:
application:
name: ssj-product
profiles:
active: dev
bootstrap-dev.yml
spring:
cloud:
nacos:
discovery:
namespace: ssj-cloud-dev
server-addr: 192.168.56.10:8848
config:
#声明 dataid 文件扩展名 这里配置的文件扩展名是指Nacos Config 配置管理中的配置格式,默认为Properties 只针对默认的配置文件
#如果使用Properties格式进行配置可以不用指定格式,如果改为其他格式则需要指定文件格式,否则会报错
file-extension: yml
server-addr: 192.168.56.10:8848
namespace: ssj-cloud-dev
# 共享配置
shared-configs:
- ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
到此基本就已经配置好了,就可以开始进行用了。
启动项目,可以看到服务已经注册成功。
3、设置配置修改后自动更新,不需要重启服务器
有两种方式:
首先在nacos中配置如下:
interior:
website:
addr: http://192.168.1.222:8000
url: ${interior.website.addr}/api/consumer/getUrl
第一种:在配置文件上面加上 @RefreshScope 注解,并用 @Value 修饰属性
@Data
@Component
@RefreshScope
public class CallBack1Properties {
@Value("${interior.website.url}")
private String url;
}
第二种:在配置文件上面加上 @ConfigurationProperties(prefix = "xxx") 注解
@Data
@Component
@ConfigurationProperties(prefix = CallBack2Properties.PREFIX)
public class CallBack2Properties {
public static final String PREFIX = "interior.website";
private String url;
}