CentOS7使用docker部署Apollo配置中心的實現(xiàn)
Apollo開源地址:
https://github.com/ctripcorp/apollo
第一步
將項目clone到本地,然后在github的releases頁面中下載三個zip文件
本文中重點講解截止2019年1月最新的1.2.0版本的部署方法
第二步
打開clone到本地的項目,目錄結(jié)構(gòu)如下

第三步
在此目錄下創(chuàng)建docker-compose.yml文件,寫入內(nèi)容:
version: "3" services: apollo-configservice: ##容器服務(wù)名 container_name: apollo-configservice ##容器名 build: apollo-configservice/src/main/docker/ ##Dockerfile路徑 image: apollo-configservice ##鏡像名 ports: - "9180:8080" volumes: - "/opt/logs/100003171" ##將/opt/logs/100003171目錄掛載到宿主機(jī)的/Users/mobin/opt/logs/100003171方便在宿主機(jī)上查看日志 environment: - spring_datasource_url=jdbc:mysql://192.168.31.136:3306/ApolloConfigDB?characterEncoding=utf8 - spring_datasource_username=root - spring_datasource_password=123456 apollo-adminservice: container_name: apollo-adminservice build: apollo-adminservice/src/main/docker/ image: apollo-adminservice ports: - "9181:8090" depends_on: - apollo-configservice volumes: - "/opt/logs/100003172" environment: - spring_datasource_url=jdbc:mysql://192.168.31.136:3306/ApolloConfigDB?characterEncoding=utf8 - spring_datasource_username=root - spring_datasource_password=123456 apollo-portal: container_name: apollo-portal build: apollo-portal/src/main/docker/ image: apollo-portal ports: - "9182:8070" depends_on: - apollo-adminservice volumes: - "/opt/logs/100003173" environment: - spring_datasource_url=jdbc:mysql://192.168.31.136:3306/ApolloPortalDB?characterEncoding=utf8 - spring_datasource_username=root - spring_datasource_password=123456
這里注意兩點:
1.在這里,我將原本的8080,8070,8090端口分別映射到9180,9181,9182端口,因為8080等端口是常用端口,可能會和其他項目發(fā)生沖突。
2.記得修改mysql的連接地址
講一下,這里可能有人會問為什么不用apollo項目中提供的quickstart-docker腳本,因為:
在quickstart-docker中,apollo開源項目組為了減少部署操作,內(nèi)置了mysql等一系列配置,我們在使用的時候肯定不會使用內(nèi)置的東西,我們希望將數(shù)據(jù)存在我們自己的mysql數(shù)據(jù)庫中。還有就是quickstart-docker是為了我們方便演示使用的
第四步
將第一步下載的三個zip文件分別復(fù)制到以下目錄中
<1>

<2>

<3>

注意:
這三個目錄分別對應(yīng)apollo-adminservice,apollo-configservice,apollo-portal服務(wù),同時我們需要分別對這三個目錄下的Dockerfile文件進(jìn)行一下修改,打開Dockerfile文件

在這里,我們發(fā)現(xiàn)Dockerfile中指定的版本號是1.3.0-SNAPSHOT,但我們下載的zip包是1.2.0版本的,所以我們要分別對這三個Dockerfile進(jìn)行版本號修改,修改好的文件如下:

第五步
登錄mysql,導(dǎo)入下面文件夾中sql文件,進(jìn)行數(shù)據(jù)庫初始化

導(dǎo)入成功后,看到多了兩個數(shù)據(jù)庫

第六步
將整個項目apollo文件夾打包成zip文件,使用ftp或scp命令將文件上傳到centos7服務(wù)器中,在服務(wù)器上執(zhí)行以下命令
unzip apollo.zip cd apollo docker-compose up -d
然后看到命令輸出

就表示這三個docker容器已創(chuàng)建成功
使用
docker ps -a
查看docker服務(wù)

發(fā)現(xiàn)已成功運行,現(xiàn)在打開瀏覽器,輸入
http://0.0.0.0:9182
就可以看到Apollo的后臺管理頁面了

第七步
在第六步時,雖然部署完成但是這里有兩個地方需要修改,否則會報錯
1.進(jìn)入apollo-portal容器

修改apollo-env環(huán)境變量
local.meta=http://localhost:9180
dev.meta=http://localhost:9180
fat.meta=http://localhost:9180
uat.meta=http://localhost:9180
lpt.meta=${lpt_meta}
pro.meta=http://localhost:9180
2.修改數(shù)據(jù)庫ApolloConfigDB的ServerConfig表中的eureka.service.url字段
http://localhost:9180/eureka/
修改完成后重啟apollo的三個容器即可
注意:
默認(rèn)賬號是apollo
默認(rèn)密碼admin
登錄apollo后,打開系統(tǒng)信息頁,可以看到這里有個Home Page Url,因為我們是在docker中部署的,所以這個地方顯示的IP地址是有問題的,它的IP地址是Docker容器中的默認(rèn)IP地址,這個地址是有問題的,因為我們在集成到項目中的時候,訪問的是服務(wù)器IP,所以Docker容器中的IP地址是訪問不了的,集成的時候就發(fā)現(xiàn)讀取不了apollo的配置

官方有給出HomePageUrl的修改方法,但測試發(fā)現(xiàn)還是有問題的
官方的解決方案
在第3條
這里不建議直接修改HomePageUrl,最好的解決辦法如下:
在Application中添加以下代碼
static{
System.setProperty("Dapollo.configService","http://192.168.X.X")
}
到此這篇關(guān)于CentOS7使用docker部署Apollo配置中心的實現(xiàn)的文章就介紹到這了,更多相關(guān)docker部署Apollo配置中心內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker啟動mysql服務(wù)的實現(xiàn)步驟
本文主要介紹了Docker啟動mysql服務(wù)的實現(xiàn)步驟,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
Centos7下安裝與卸載docker應(yīng)用容器引擎的方法
這篇文章主要介紹了Centos7下安裝與卸載docker應(yīng)用容器引擎的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
docker內(nèi)的容器如何與宿主機(jī)共享IP的方法
本文主要介紹了docker內(nèi)的容器如何與宿主機(jī)共享IP的方法,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
Docker?Push?Skipped?foreign?layer?的錯誤問題及解決方案
當(dāng)Docker推送基于Windows鏡像到私有倉庫的時候會遇到Skipped foreign layer的問題,這篇文章主要介紹了Docker?Push?Skipped?foreign?layer?的錯誤問題及解決方案,需要的朋友可以參考下2022-05-05
使用dockercompose搭建springboot-mysql-nginx應(yīng)用
這篇文章主要介紹了使用dockercompose搭建springboot-mysql-nginx應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03
Docker容器Container鏡像Image如何存儲詳解
本文主要介紹Docker容器(Container)和鏡像(Image)是如何進(jìn)行數(shù)據(jù)存儲詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
docker-compose鏡像發(fā)布springboot項目的流程分析
Docker-Compose項目由Python編寫,調(diào)用Docker服務(wù)提供的API來對容器進(jìn)行管理。因此,只要所操作的平臺支持Docker API,就可以在其上利用Compose來進(jìn)行編排管理,接下來通過本文給大家介紹docker-compose發(fā)布springboot項目的流程分析,一起看看吧2021-06-06

