1. apollo在liunx環境實戰(三)
1.1. 准備
- 下載apollo源碼
https://github.com/ctripcorp/apollo
1.2. 創建數據庫
- 在自己的liunx環境下的mysql運行它的創庫語句
1.3. 配置數據庫
-
其中環境列表配置,部門配置,請配置數據庫
-
eureka地址配置
1.4. 構建三個服務configservice,adminservice,portal
- 它提供了兩種方式,一種不用自己定制的直接下載它已經打包好的zip包,地址如下
- 另一種就是自己打包源碼,我采用的自己打包源碼,優點就是可以保證代碼最新
1.4.1. 打包源碼
-
打包前
-
打包
-
我用的git bash模擬liunx運行sh的打包腳本,然后被坑了一把,不知道為什么,打包后對應的數據庫url地址就是沒有配進去,有知道原因和如何解決的麻煩告知一聲,Thanks♪(・ω・)ノ
-
我后來是直接手動打開壓縮包,把配置文件數據庫地址修改了一遍,然后覆蓋
1.5. 上傳服務器
-
把三個服務打包后的zip包上傳到服務器
-
我編寫了一點腳本啟動順手點
[root@izbp1itlw36onyj4m9b4hiz docker-apollo]# ls
adminservice configservice deleteAll.sh portal
[root@izbp1itlw36onyj4m9b4hiz docker-apollo]# cd adminservice/
[root@izbp1itlw36onyj4m9b4hiz adminservice]# ls
apollo-adminservice-1.4.0-SNAPSHOT-github.zip build.sh Dockerfile start.sh
[root@izbp1itlw36onyj4m9b4hiz adminservice]# cat build.sh
#!/bin/bash
docker build -t apollo-adminservice .
[root@izbp1itlw36onyj4m9b4hiz adminservice]# cat start.sh
#!/bin/bash
docker run -p 8090:8090 -d -v /tmp/logs:/opt/logs --name apollo-adminservice apollo-adminservice
[root@izbp1itlw36onyj4m9b4hiz adminservice]# cd ../configservice/
[root@izbp1itlw36onyj4m9b4hiz configservice]# ls
apollo-configservice-1.4.0-SNAPSHOT-github.zip build.sh Dockerfile start.sh
[root@izbp1itlw36onyj4m9b4hiz configservice]# cat build.sh
#!/bin/bash
docker build -t apollo-configservice .
[root@izbp1itlw36onyj4m9b4hiz configservice]# cat start.sh
#!/bin/bash
docker run -p 8080:8080 -d -v /tmp/logs:/opt/logs --name apollo-configservice apollo-configservice
[root@izbp1itlw36onyj4m9b4hiz configservice]# cd ../portal/
[root@izbp1itlw36onyj4m9b4hiz portal]# ls
apollo-portal-1.4.0-SNAPSHOT-github.zip build.sh Dockerfile start.sh
[root@izbp1itlw36onyj4m9b4hiz portal]# cat build.sh
#!/bin/bash
docker build -t apollo-portal .
[root@izbp1itlw36onyj4m9b4hiz portal]# cat start.sh
#!/bin/bash
docker run -p 8070:8070 -d -v /tmp/logs:/opt/logs --name apollo-portal apollo-portal
[root@izbp1itlw36onyj4m9b4hiz portal]# cd ..
[root@izbp1itlw36onyj4m9b4hiz docker-apollo]# cat deleteAll.sh
#!/bin/bash
docker stop `docker ps -a | grep apollo-adminservice | awk '{print $1}'`&docker rm `docker ps -a | grep apollo-adminservice | awk '{print $1}'`&docker rmi `docker images | grep apollo-adminservice | awk '{print $3}'`
docker stop `docker ps -a | grep apollo-configservice | awk '{print $1}'`&docker rm `docker ps -a | grep apollo-configservice | awk '{print $1}'`&docker rmi `docker images | grep apollo-configservice | awk '{print $3}'`
docker stop `docker ps -a | grep apollo-portal | awk '{print $1}'`&docker rm `docker ps -a | grep apollo-portal | awk '{print $1}'`&docker rmi `docker images | grep apollo-portal | awk '{print $3}'`
- 最后的刪除腳本沒優化過,我用來一鍵刪除部署的三個docker容器的,刪除一次失敗隔個幾秒再刪,直到全部鏡像刪掉
1.6. 構建鏡像運行
- 基於1.4的腳本,先后運行configservice的build.sh,start.sh,再是adminserivce,portal
1.7. 測試
-
訪問服務器地址:8080,顯示了adminservice和configservice就正確了
-
訪問服務器地址:8070,顯示如下,我已經創建了兩個項目
- 創建新項目,進去后如下
1.8. 接入客戶端
- 仍舊以apollo提供的demo為例
1.8.1. 前置准備
- 在window中需要配置
C:\opt\settings\server.properties
該文件屬性,內容如下,模擬該客戶端環境,eureka地址
env=DEV
apollo.meta=http://ip:8080
- 修改客戶端app.properties中,app.id=你新建項目中配置的appid
1.8.2. 啟動客戶端
-
第一次啟動可能有些警告啥的,因為第一次沒有本地緩存讀不到,忽略它,只要你再界面配置了屬性,第一次啟動后就會有本地緩存了
-
控制台輸入屬性名回車,后台界面修改屬性提交,客戶端也能接收到改變,再次獲取,屬性值改變
Apollo Config Demo. Please input key to get the value. Input quit to exit.
> count
> [apollo-demo][main]2019-03-19 10:49:27,240 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Loading key : count with value: 20
[apollo-demo][Apollo-Config-1]2019-03-19 11:33:50,330 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Changes for namespace application
[apollo-demo][Apollo-Config-1]2019-03-19 11:33:50,334 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Change - key: count, oldValue: 20, newValue: 30, changeType: MODIFIED
count
> [apollo-demo][main]2019-03-19 11:33:54,232 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Loading key : count with value: 30