使用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數據庫連接http://www.rzrgm.cn/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安裝
請參考這篇文章http://www.rzrgm.cn/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模塊
浙公網安備 33010602011771號