docker compose 一鍵部署分布式配置中心Apollo的過程詳解
簡介
說起分布式肯定要想到分布式配置中心、分布式日志、分布式鏈路追蹤等
在分布式部署中業(yè)務(wù)往往有很多配置比如: 應(yīng)用程序在啟動(dòng)和運(yùn)行時(shí)需要讀取一些配置信息,配置基本上伴隨著應(yīng)用程序的整個(gè)生命周期,比如:數(shù)據(jù)庫連接參數(shù)、啟動(dòng)參數(shù)等,都需要去維護(hù)和配置,但不可能一臺(tái)臺(tái)服務(wù)器登錄上去配置
今天我要跟大家分享一下分布式配置中心Apollo:
Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場景。
搭建
官方文檔中有兩種搭建方式一種是下載源代碼進(jìn)行搭建,一種是使用Docker或者K8S進(jìn)行搭建,今天我們使用Docker來進(jìn)行搭建,畢竟Docker對(duì)于開發(fā)者來說更友好一些。
如果已有Mysql服務(wù),推薦已有Mysql服務(wù)或者云服務(wù)RDS來當(dāng)數(shù)據(jù)庫使用,畢竟數(shù)據(jù)無價(jià)。
version: "3" services: apollo-configservice: #Config Service提供配置的讀取、推送等功能,服務(wù)對(duì)象是Apollo客戶端 image: apolloconfig/apollo-configservice:1.8.1 restart: always #container_name: apollo-configservice volumes: - ./logs/apollo-configservice:/opt/logs ports: - "8080:8080" environment: - TZ='Asia/Shanghai' - SERVER_PORT=8080 - EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx - EUREKA_INSTANCE_HOME_PAGE_URL=http://xxx.xxx.xxx.xxx:8080 - SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai - SPRING_DATASOURCE_USERNAME=root - SPRING_DATASOURCE_PASSWORD=MysqkPassWord! apollo-adminservice: #Admin Service提供配置的修改、發(fā)布等功能,服務(wù)對(duì)象是Apollo Portal(管理界面) image: apolloconfig/apollo-adminservice:1.8.1 restart: always #container_name: apollo-adminservice volumes: - ./logs/apollo-adminservice:/opt/logs ports: - "8090:8090" depends_on: - apollo-configservice environment: - TZ='Asia/Shanghai' - SERVER_PORT=8090 - EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx - SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai - SPRING_DATASOURCE_USERNAME=root - SPRING_DATASOURCE_PASSWORD=MysqkPassWord! apollo-portal: #管理界面 image: apolloconfig/apollo-portal:1.8.1 restart: always container_name: apollo-portal volumes: - ./logs/apollo-portal:/opt/logs ports: - "8070:8070" depends_on: - apollo-adminservice environment: - TZ='Asia/Shanghai' - SERVER_PORT=8070 - EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx - APOLLO_PORTAL_ENVS=dev - DEV_META=http://xxx.xxx.xxx.xxx:8080 - SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai - SPRING_DATASOURCE_USERNAME=root - SPRING_DATASOURCE_PASSWORD=MysqkPassWord!
從以上docker-compose.yaml中可以看出共包含3個(gè)服務(wù),分別為:
- Config Service提供配置的讀取、推送等功能,服務(wù)對(duì)象是Apollo客戶端
- Admin Service提供配置的修改、發(fā)布等功能,服務(wù)對(duì)象是Apollo Portal(管理界面)
- Portal(管理界面)
如果想了解它們之間的運(yùn)行方式推薦查看官方文檔
日志掛載到外部./logs目錄下
大家可以看到上方并沒有給出Mysql的部署,如果需要使用容器部署Mysql可以參照下方docker-compose.yaml
version: '3' services: mysql: # myslq 數(shù)據(jù)庫 image: 'mysql/mysql-server' container_name: 'mysql' restart: always command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower-case-table-names=1 environment: #環(huán)境變量 MYSQL_ROOT_HOST: "%" MYSQL_ROOT_PASSWORD: password MYSQL_USER: brook MYSQL_PASSWORD: password ports: - "3306:3306"
上述mysql的docker-compose.yaml 僅供測試使用
初始化數(shù)據(jù)庫
初始化 apolloconfigdb.sql 和 apolloportaldb.sql
數(shù)據(jù)庫初始化后,記得修改apolloconfigdb庫中serverconfig表的 eureka.service.url 否則 apollo-adminservice無法注冊(cè)到eureka
修改后切換到Apollo docker-compose.yaml目錄 然后使用
docker-compose up -d #啟動(dòng)文件中的三個(gè)服務(wù)并且后臺(tái)運(yùn)行
查看啟動(dòng)情況
docker-compose ps
訪問 http://10.0.0.53:8070/ #Apollo管理端
默認(rèn)用戶名:apollo
默認(rèn)密碼:admin
創(chuàng)建一個(gè)測試項(xiàng)目
測試
創(chuàng)建一個(gè).NetCore項(xiàng)目 添加Apollo.net client
添加Apollo
配置Apollo
配置如上
添加測試內(nèi)容
代碼中獲取Apollo
啟動(dòng)程序 請(qǐng)求/weatherforecast/apollotest
發(fā)現(xiàn)并未獲取到apollo中設(shè)置的配置
檢查Apollo發(fā)現(xiàn)配置的值并沒有發(fā)布
所以大家配置或者修改了Apollo一定記得發(fā)布,我們發(fā)布后再次刷新瀏覽器
發(fā)現(xiàn)數(shù)據(jù)已經(jīng)是新的數(shù)據(jù)了,我們?cè)俅涡薷囊幌翧pollo的Value
刷新
致此 Apollo已經(jīng)搭建完畢并且可以正常使用了
代碼
示例中的代碼在
https://github.com/yuefengkai/Brook.Apollo
歡迎大家Start
注意如果程序啟動(dòng)后無法拉取配置,可以打開Apollo的日志,在控制臺(tái)中可以看到詳細(xì)的配置 放到Program.cs Main函數(shù)第一行即可!
LogManager.UseConsoleLogging(Com.Ctrip.Framework.Apollo.Logging.LogLevel.Trace);
參考
1.https://github.com/apolloconfig/apollo.net
2.https://github.com/apolloconfig/apollo
3.https://github.com/apolloconfig/apollo/tree/master/scripts/docker-quick-start
到此這篇關(guān)于docker compose 一鍵部署分布式配置中心Apollo的文章就介紹到這了,更多相關(guān)docker compose部署分布式配置中心Apollo內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- docker常用容器啟動(dòng)docker-compose.yml配置文件使用
- 關(guān)于immich?docker-compose.yml配置文件詳解
- 在docker-compose.yml文件中配置容器的環(huán)境變量方式
- docker-compose.yml參數(shù)的用法(配置文件)
- 使用docker?compose快速配置一組容器服務(wù)詳解
- Springboot使用docker-compose實(shí)現(xiàn)動(dòng)態(tài)配置過程
- docker-compose配置并部署redis服務(wù)的實(shí)現(xiàn)
- 詳解Docker Compose配置文件參數(shù)
- Docker compose配置文件寫法及命令使用示例
- docker-compose安裝yml文件配置方式
- docker-compose部署配置jenkins的詳細(xì)教程
- Docker Compose 配置指南小結(jié)
相關(guān)文章
docker部署springBoot項(xiàng)目實(shí)操(docker是什么)
Docker可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化,這篇文章主要介紹了docker部署springBoot項(xiàng)目實(shí)操,需要的朋友可以參考下2025-03-03Docker鏡像的遷移與備份及Dockerflie 使用方法詳解
遷移和備份主要有三個(gè)操作命令將容器保存為鏡像、備份鏡像(將鏡像導(dǎo)出為一個(gè)文件)、鏡像的遷移與恢復(fù),這篇文章主要介紹了Docker鏡像的遷移與備份、Dockerflie 使用方法,需要的朋友可以參考下2022-07-07