CentOS7使用docker部署Apollo配置中心的實(shí)現(xiàn)
Apollo開(kāi)源地址:
https://github.com/ctripcorp/apollo
第一步
將項(xiàng)目clone到本地,然后在github的releases頁(yè)面中下載三個(gè)zip文件
本文中重點(diǎn)講解截止2019年1月最新的1.2.0版本的部署方法
第二步
打開(kāi)clone到本地的項(xiàng)目,目錄結(jié)構(gòu)如下
第三步
在此目錄下創(chuàng)建docker-compose.yml文件,寫(xiě)入內(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
這里注意兩點(diǎn):
1.在這里,我將原本的8080,8070,8090端口分別映射到9180,9181,9182端口,因?yàn)?080等端口是常用端口,可能會(huì)和其他項(xiàng)目發(fā)生沖突。
2.記得修改mysql的連接地址
講一下,這里可能有人會(huì)問(wèn)為什么不用apollo項(xiàng)目中提供的quickstart-docker腳本,因?yàn)椋?/p>
在quickstart-docker中,apollo開(kāi)源項(xiàng)目組為了減少部署操作,內(nèi)置了mysql等一系列配置,我們?cè)谑褂玫臅r(shí)候肯定不會(huì)使用內(nèi)置的東西,我們希望將數(shù)據(jù)存在我們自己的mysql數(shù)據(jù)庫(kù)中。還有就是quickstart-docker是為了我們方便演示使用的
第四步
將第一步下載的三個(gè)zip文件分別復(fù)制到以下目錄中
<1>
<2>
<3>
注意:
這三個(gè)目錄分別對(duì)應(yīng)apollo-adminservice,apollo-configservice,apollo-portal服務(wù),同時(shí)我們需要分別對(duì)這三個(gè)目錄下的Dockerfile文件進(jìn)行一下修改,打開(kāi)Dockerfile文件
在這里,我們發(fā)現(xiàn)Dockerfile中指定的版本號(hào)是1.3.0-SNAPSHOT,但我們下載的zip包是1.2.0版本的,所以我們要分別對(duì)這三個(gè)Dockerfile進(jìn)行版本號(hào)修改,修改好的文件如下:
第五步
登錄mysql,導(dǎo)入下面文件夾中sql文件,進(jìn)行數(shù)據(jù)庫(kù)初始化
導(dǎo)入成功后,看到多了兩個(gè)數(shù)據(jù)庫(kù)
第六步
將整個(gè)項(xiàng)目apollo文件夾打包成zip文件,使用ftp或scp命令將文件上傳到centos7服務(wù)器中,在服務(wù)器上執(zhí)行以下命令
unzip apollo.zipcd apollodocker-compose up -d
然后看到命令輸出
就表示這三個(gè)docker容器已創(chuàng)建成功
使用
docker ps -a
查看docker服務(wù)
發(fā)現(xiàn)已成功運(yùn)行,現(xiàn)在打開(kāi)瀏覽器,輸入
http://0.0.0.0:9182
就可以看到Apollo的后臺(tái)管理頁(yè)面了
第七步
在第六步時(shí),雖然部署完成但是這里有兩個(gè)地方需要修改,否則會(huì)報(bào)錯(cuò)
1.進(jìn)入apollo-portal容器
修改apollo-env環(huán)境變量
local.meta=http://localhost:9180dev.meta=http://localhost:9180fat.meta=http://localhost:9180uat.meta=http://localhost:9180lpt.meta=${lpt_meta}pro.meta=http://localhost:9180
2.修改數(shù)據(jù)庫(kù)ApolloConfigDB的ServerConfig表中的eureka.service.url字段
http://localhost:9180/eureka/
修改完成后重啟apollo的三個(gè)容器即可
注意:
默認(rèn)賬號(hào)是apollo
默認(rèn)密碼admin
登錄apollo后,打開(kāi)系統(tǒng)信息頁(yè),可以看到這里有個(gè)Home Page Url,因?yàn)槲覀兪窃赿ocker中部署的,所以這個(gè)地方顯示的IP地址是有問(wèn)題的,它的IP地址是Docker容器中的默認(rèn)IP地址,這個(gè)地址是有問(wèn)題的,因?yàn)槲覀冊(cè)诩傻巾?xiàng)目中的時(shí)候,訪問(wèn)的是服務(wù)器IP,所以Docker容器中的IP地址是訪問(wèn)不了的,集成的時(shí)候就發(fā)現(xiàn)讀取不了apollo的配置
官方有給出HomePageUrl的修改方法,但測(cè)試發(fā)現(xiàn)還是有問(wèn)題的
官方的解決方案
在第3條
這里不建議直接修改HomePageUrl,最好的解決辦法如下:
在Application中添加以下代碼
static{ System.setProperty('Dapollo.configService','http://192.168.X.X')}
到此這篇關(guān)于CentOS7使用docker部署Apollo配置中心的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)docker部署Apollo配置中心內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP.NET Core實(shí)現(xiàn)中間件的幾種方式2. .Net Core和RabbitMQ限制循環(huán)消費(fèi)的方法3. html中的form不提交(排除)某些input 原創(chuàng)4. 使用css實(shí)現(xiàn)全兼容tooltip提示框5. 利用CSS制作3D動(dòng)畫(huà)6. XML解析錯(cuò)誤:未組織好 的解決辦法7. 告別AJAX實(shí)現(xiàn)無(wú)刷新提交表單8. jsp實(shí)現(xiàn)登錄驗(yàn)證的過(guò)濾器9. jsp實(shí)現(xiàn)局部刷新頁(yè)面、異步加載頁(yè)面的方法10. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))
