中心式配置服务: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服务保持一致。


浙公网安备 33010602011771号