Docker部署Apollo配置中心 && Apollo与SpringBoot的集成

1.Apollo定义(来源官网,仔细的定义和作用看官网就好啦)

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

2.使用Docker部署Apollo分布式环境(使用docker部署一个Dev和Pro双配置环境)

2.1 服务环境准备
  • CentOS 6.5 (64-bit) 或更高的版本
  • Docker和Rancher的安装(Docker必要,Rancher非必须)
  • MySQL 5.6.5+
2.2 数据库初始化

在MySql中创建ApolloPortalDB数据库 执行初始化脚本
因为Apollo一个环境需要一个ApolloConfigDB所以此次安装我们还要创建两个数据库 ApolloConfigDBDev(Dev环境配置),ApolloConfigDBPro(Pro环境配置);ApolloConfig初始化脚本
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第1张图片

2.3 使用Rancher安装

打开Rancher添加需要安装的主机,点击添加容器
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第2张图片
填写基础信息(使用idoop/docker-apollo:latest镜像)
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第3张图片
添加环境变量
本次部署一个Dev和Pro双配置环境,在Apollo生产环境中需要注意的是portal(默认端口:8070)服务只需要在生产环境部署一个即可,而每个环境的都需要部署独立的admin和config服务。 镜像中默认四个环境以及其config和admin端口分别为DEV(8080-8090),FAT(8081-8091),UAT(8082-8092),PRO(8083-8093),启动之前请确保要启动的端口未被占用。

# 开启Portal,默认端口: 8070
PORTAL_DB: jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8
PORTAL_DB_USER: root
PORTAL_DB_PWD: 123456

# 开启dev环境, 默认端口: config 8080, admin 8090
DEV_DB: jdbc:mysql://xxx.xxx.xxx.xxx::3306/ApolloConfigDBDev?characterEncoding=utf8
DEV_DB_USER: root
DEV_DB_PWD: 123456

# 开启fat环境, 默认端口: config 8081, admin 8091
#FAT_DB: jdbc:mysql://xxx.xxx.xxx.xxx::3306/ApolloConfigDBFat?characterEncoding=utf8
#FAT_DB_USER: root
#FAT_DB_PWD: 123456

# 开启uat环境, 默认端口: config 8082, admin 8092
#UAT_DB: jdbc:mysql://xxx.xxx.xxx.xxx::3306/ApolloConfigDBUat?characterEncoding=utf8
#UAT_DB_USER: root
#UAT_DB_PWD: 123456
# 开启pro环境, 默认端口: config 8083, admin 8093
PRO_DB: jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDBPro?characterEncoding=utf8
PRO_DB_USER: root
PRO_DB_PWD: 123456

Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第4张图片

修改容器的网络模式为主机模式(网上一些博客上说可以支持桥接模式,但是之前用桥接模式注册到eureka中的地址是容器内网地址而无法使用,坑。。。)
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第5张图片
点击创建等待一两分钟 查看容器日志出现如下日志表明启动成功
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第6张图片

2.4 使用Docker命令安装

如果Rancher使用不熟练,把上面转换为docker脚本如下:

docker run --net="host" --name apollo -d \ 
 -e PORTAL_DB = 'jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8' \
 -e PORTAL_DB_USER = 'root' \
 -e PORTAL_DB_PWD = '123456' \
 -e DEV_DB = 'jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDBDev?characterEncoding=utf8' \
 -e DEV_DB_USER = 'root' \
 -e DEV_DB_PWD = '123456' \
 -e PRO_DB = 'jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDBPro?characterEncoding=utf8' \
 -e PRO_DB_USER = 'root' \
 -e PRO_DB_PWD = '123456' idoop/docker-apollo:latest
2.4 安装后问题处理

打开localhost:8070地址用默认的用户名密码 apollo admin登录新建一个demo项目发现项目环境只有DEV
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第7张图片
虽然Apollo安装完毕,但是还是有很多坑~等待着我们一个个的解决。
1. 因为初始化ApolloConfigDBPro是默认连接的Eureka是dev环境的Eureka修改ApolloConfigDBPro数据库表ServerConfig中eureka.service.url的端口为8083。
2. 因为ApolloPortalDB默认只有一个dev环境,修改ApolloPortalDB数据库表ServerConfig中apollo.portal.envs值为dev,pro(多环境用逗号隔开不区分大小写)

重启apollo容器等待运行成功,登录查看环境如图:
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第8张图片
输入localhost:8080,localhost:8083如图:
在这里插入图片描述在这里插入图片描述
出现上面三张图到此我们的apollo安装配置结束。。。

3.Apollo与SpringBoot的集成

3.1 Apollo控制台新建demo项目(部门可在数据库配置)

Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第9张图片
分别在DEV和UAT环境添加并发布key为server.port的配置,其中DEV环境的值为1111,PRO环境的值为2222
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第10张图片

3.2 新建SpringBoot项目Demo引入Apollo依赖。
	
    
        com.ctrip.framework.apollo
        apollo-client
        1.0.0
    
    
        com.ctrip.framework.apollo
        apollo-core
        1.0.0
    
3.2 新建SpringBoot启动类加入EnableApolloConfig注解

Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第11张图片

3.3 设置启动VM配置实现项目零配置启动

idea修改启动配置
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第12张图片
Docker部署Apollo配置中心 && Apollo与SpringBoot的集成_第13张图片
如上图配置是选择dev环境配置,点击应用启动springboot项目如图日志代表我们端口配置成功
在这里插入图片描述

你可能感兴趣的:(Docker部署Apollo配置中心 && Apollo与SpringBoot的集成)