使用docker-compose部署apollo配置中心
Apollo
1、Apollo配置中心
1.1、Apollo简介
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
Apollo支持4个维度管理Key-Value格式的配置:Namespace(名称空间)、Cluster(集群)、Environment(环境)、Application(应用)。
具体介绍参考:https://github.com/ctripcorp/apollo/wiki
1.2、Apollo特性
统一管理不同环境,不同集群的配置
配置修改实时生效
版本发布管理
灰度发布
权限管理,发布审计,操作审计
客户端配置信息监控
提供java和.net原生客户端,且支持http接口
2、docker-compose部署Apollo
2.1、环境需要
jdk 1.8版本以上 mysql 5.6版本以上 maven最新的就好 docker docker-compose
安装8版本jdk
# yum -y install java-1.8.0-openjdk*
使用yum安装5.7.0数据库连接https://www.cnblogs.com/powell/p/16820738.html也可以使用docker或者二进制安装
mvn安装
# cd /opt/
# wget https://dlcdn.apache.org/maven/maven-3/3.9.3/binaries/apache-maven-3.9.3-bin.tar.gz --no-check-certificate
# tar xf apache-maven-3.9.3-bin.tar.gz
# mv apache-maven-3.9.3 maven
添加maven全局环境变量
# vim /etc/profile
export PATH="$PATH:/opt/maven/bin"
# source /etc/profile
查看版本
dokcer安装
访问阿里开源镜像网站配置使用yum安装docker
docker-compose安装
请参考这篇文章https://www.cnblogs.com/powell/p/17012815.html
2.2、从git上clone Apollo项目,上传至服务器
https://github.com/apolloconfig/apollo
下载最新版本的Apollo
进去后页面拉到最下面下载对应的源码包(源码包包含admin,config,portal)
在服务下载包
# cd /opt
# wget https://github.com/apolloconfig/apollo/archive/refs/heads/master.zip
# tar xf master.zip
# unzpi master.zip
# mv apollo-master apollo
# cd apollo
2.3、导入数据库配置
进入到源码数据库脚本目录将初始化sql导入到数据库
# cd /opt/apollo/scripts/sql/
# mysql -uroot -p < apolloconfigdb.sql
# mysql -uroot -p < apolloportaldb.sql
修改配置
进入文件目录,找到文件/opt/apollo/scripts/build.sh(linux) build.bat(windows)
修改build.sh中数据库配置以及所需环境配置
修改数据库连接配置,你的开发环境的ip和port,后续访问会用到
修改了脚本中的cd “${0%/*}” || exit为cd “/opt/apollo/scripts/修改原因为执行脚本报错,如果不报错可以不用修改
运行脚本,编译文件
sh build.sh或者./build.sh
编译完成后会在apollo-adminservice;apollo-configservice;apollo-portal生成打好的包在相应的target目录下.jar和-gitHub.zip以及src/main/docker/下的Dockerfile文件
将打包的包及Dockerfile文件移动目录下相对应的文件到该目录跟下
# cd /opt/apollo
# cp /opt/apollo/apollo-adminservice/target/apollo-adminservice-2.2.0-SNAPSHOT* /opt/apollo/apollo-adminservice/
# cp /opt/apollo/apollo-adminservice/src/main/docker/Dockerfile /opt/apollo/apollo-adminservice/
# cp /opt/apollo/apollo-configservice/target/apollo-configservice-2.2.0-SNAPSHOT* /opt/apollo/apollo-configservice/
# cp /opt/apollo/apollo-configservice/src/main/docker/Dockerfile /opt/apollo/apollo-configservice/
# cp /opt/apollo/apollo-portal/target/apollo-portal-2.2.0-SNAPSHOT* /opt/apollo/apollo-portal/
# cp /opt/apollo/apollo-portal/src/main/docker/Dockerfile /opt/apollo/apollo-portal/
修改3个插件的Docker file文件对应版本号变量
[root@localhost apollo]# vim apollo-configservice/Dockerfile
[root@localhost apollo]# vim apollo-adminservice/Dockerfile
[root@localhost apollo]# vim apollo-portal/Dockerfile
分别将变量修改为下图所示
编译docker-compose.yml文件,该文件和apollo-adminservice为同一级别文件目录
[root@localhost apollo]# cd /opt/apollo
编写docker-compose文件
[root@localhost apollo]# vim docker-compose.yml
version: "2"
services:
apollo-configservice: ##容器服务名
container_name: apollo-configservice ##容器名
build: apollo-configservice/ ##Dockerfile路径
image: apollo-configservice:2.2.0 ##镜像名
network_mode: host ##网络设置
ports:
- "8080:8080"
volumes:
- "/docker/apollo/logs/100003171:/opt/logs/100003171" ##将/opt/logs/100003171目录挂载到宿主机的/docker/apollo/logs/100003171方便在宿主机上查看日志
environment:
- spring_datasource_url=jdbc:mysql://192.168.135.146:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
- spring_datasource_username=root
- spring_datasource_password=123456
apollo-adminservice:
container_name: apollo-adminservice
build: apollo-adminservice/
image: apollo-adminservice:2.2.0
network_mode: host
ports:
- "8090:8090"
depends_on:
- apollo-configservice
volumes:
- "/docker/apollo/logs/100003172:/opt/logs/100003172"
environment:
- spring_datasource_url=jdbc:mysql://192.168.135.146:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
- spring_datasource_username=root
- spring_datasource_password=123456
apollo-portal:
container_name: apollo-portal
build: apollo-portal/
image: apollo-portal:2.2.0
network_mode: host
ports:
- "8070:8070"
depends_on:
- apollo-adminservice
volumes:
- "/docker/apollo/logs/100003173:/opt/logs/100003173"
environment:
- spring_datasource_url=jdbc:mysql://192.168.135.146:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
- spring_datasource_username=root
- spring_datasource_password=123456
注意事项,
1: build: 中指定你Dockerfile文件的位置
2: environment 环境变量中指定你数据库的配置信息
3: eureka.instance.ip-address 指定注册到eureka地址,这个最好使用你物理机的内网地址。
特别注意: 启动前最好先修改ApolloConfigDB数据库中 ServerConfig中的eureka.service.url值,改为具体的IP
编译并启动:
[root@localhost apollo]# docker-compose -f docker-compose.yml up --build -d
执行完成后会生成三个新的docker镜像,看是否启动.如果有开启后妙计退出,可查看日志看是否有报错命令(dockers logs 镜像名)
看到启动后等待2-5分钟后访问http:serverID:8080即可
8080端口是:Eureka(注册中心)
8090端口是:adminservice
8070端口是:protal(web管理页面)
访问管理页面
登录初始账号跟密码是:apollo/admin
3、安装多环境apollo或者集群
部署多环境的apollo在其它节点不需要部署portal模块