中心式配置服务:Spring-Cloud-Config

由于微服务模式中每个微服务都需要独立进行配置,因此,依照传统的给每个SpringBoot组件添加一个application.yml是不现实的,这样做后期运维的工作量会很大。因此,首先引入Spring-Cloud-Config组件。

需要注意的是,Spring-Cloud-Config可以作为一个独立的SpringBoot应用进行部署,不一定要注册成为服务,但为了整体架构完整,我们先将其注册为服务。

application.yml中加入如下配置:

 

上述配置中指定了各组件的配置文件存放的仓库地址及登录信息,以及Eureka的默认注册地址,当然,这个配置文件后面是需要动态传入Eureka的注册信息的,稍后会看到。

 

仓库中需要针对每一个组件进行配置文件存储:

标准的文件名是“service-name”-“environment”,这里的service-name需要与各组件中的spring.application.name保持一致。

 

给启动类添加如下注解:

@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
@EnableDiscoveryClie

 

启动之后,控制台会报错提示:

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

 

 

忽略即可,这是因为此时我们尚未启动Eureka注册中心。而之所以不启动Eureka注册中心,是因为需要等待Config启动之后,Eureka注册中心从Config中获取配置来完成启动。

 

启动之后尝试获取配置信息:

标准的REST API。

 

接下来编写Dockerfile。由于Eureka的配置信息并不确定,因此,希望能够在启动的时候动态传入Eureka相关信息。

FROM openjdk:8u252-jdk
MAINTAINER Pony Liu<liupeng3@aactechnologies.com>
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
VOLUME /tmp
ADD target/acoustics-api-platform-config-0.0.1-SNAPSHOT.jar config.jar
ENTRYPOINT ["nohup","java","-jar","/config.jar","--eureka.client.service-url.defaultZone=http://${eureka_username}:${eureka_password}@${eureka_server}:${eureka_port}/eureka","&"]
EXPOSE 7011

 

上述配置文件保存后,通过下述命令将其编译为Docker镜像:

 
docker build -t aac/config:v1 .

 

而后通过如下命令启动:

 
docker run -itd -p 7011:7011 -e eureka_username=admin -e eureka_password=123456 -e eureka_server=10.2.138.154 -e eureka_port=7000 aac/config:v1

 

此处传入的Eureka相关信息应当与接下来即将启动的Eureka服务保持一致。

posted @ 2020-05-26 09:52  猎喵Rachel  阅读(82)  评论(0)    收藏  举报