1.Apollot簡述mysql
Apollo(阿波羅)是攜程框架部門研發的分佈式配置中心,可以集中化管理應用不一樣環境、不一樣集羣的配置,配置修改後可以實時推送到應用端,而且具有規範的權限、流程治理等特性,適用於微服務配置管理場景;服務端基於Spring Boot和Spring Cloud開發,打包後能夠直接運行,不須要額外安裝Tomcat等應用容器;Java客戶端不依賴任何框架,可以運行於全部Java運行時環境,同時對Spring/Spring Boot環境也有較好的支持。能夠很好的替代Spring Cloud Configgit
2.部署說明github
使用Docker能夠快速方便的部署Apollo,部署時將Apollo-configservice、Apollo-adminservice、Apollo-portal分別Docker化,以便提升其擴展性,其中MySQL並無Docker化。spring
3.部署步驟sql
3.1.數據庫初始化工做參見官網docker
3.2. 修改portal端口數據庫
因爲是在一臺機器上進行(僞)分佈式部署Apollo,因此須要在修改portal/script/startup.sh中的端口,若是是在不一樣的機器上部署則可忽略
SERVER_PORT=8080 => SERVER_PORT=8070
3.3. 修改Eureka地址網絡
adminservice啓動時會將本身做爲服務註冊到configservice註冊中心中,默認爲http://localhost:/8080/eureka,因此須要將ApolloConfigDB.ServerConfig表中的
eureka.service.url字段修改成:http://apollo-configservice/8080/eureka,這樣adminservice啓動時就會在configservice容器中進行註冊
(apollo-configservice爲容器編排時configservice容器的服務名,同一網絡中的容器可使用容器服務名訪問其餘容器)框架
3.4. 修改Meta Service地址分佈式
Portal和Apollo Client都須要從Meta Service(即apollo-configservice自己)獲取服務地址,而後經過服務地址直接訪問,Meta Service地址修改在build.sh,
由dev_meta=http://localhost:8080修改成dev_meta=http://apollo-configservice:8080
3.5. 執行編譯、打包
修改完以上配置後,在apollo/script/下執行命令:./build.sh 執行完後將configservice、adminservice、portal的target路徑下apollo-xxx-0.9.0-SNAPSHOT-github.zip分別複製到configservice、adminservice、portal的src/main/docker目錄,
和Dockerfile放在一塊兒,由於在使用Dockerfile文件製做鏡像進須要用這些包
3.6. 編寫docker-compose.yml
使用Docker compose能夠定義和運行多個Docke容器應用,因此使用Docker compose對configservice、adminservice、portal進行服務編排
version: "3" services: apollo-configservice: ##容器服務名 container_name: apollo-configservice ##容器名 build: apollo-configservice/src/main/docker/ ##Dockerfile路徑 image: apollo-configservice:0.9.0 ##鏡像名 ports: - "8080:8080" volumes: - "/Users/mobin/opt/logs/100003171:/opt/logs/100003171" ##將/opt/logs/100003171目錄掛載到宿主機的/Users/mobin/opt/logs/100003171方便在宿主機上查看日誌 environment: - spring_datasource_url=jdbc:mysql://xxx:3306/ApolloConfigDB?characterEncoding=utf8 - spring_datasource_username=xxx - spring_datasource_password=xxx apollo-adminservice: container_name: apollo-adminservice build: apollo-adminservice/src/main/docker/ image: apollo-adminservice:0.9.0 ports: - "8090:8090" depends_on: - apollo-configservice volumes: - "/Users/mobin/opt/logs/100003172:/opt/logs/100003172" environment: - spring_datasource_url=jdbc:mysql://xxx:3306/ApolloConfigDB?characterEncoding=utf8 - spring_datasource_username=xxx - spring_datasource_password=xxx apollo-portal: container_name: apollo-portal build: apollo-portal/src/main/docker/ image: apollo-portal:0.9.0 ports: - "8070:8070" depends_on: - apollo-adminservice volumes: - "/Users/mobin/opt/logs/100003173:/opt/logs/100003173" environment: - spring_datasource_url=jdbc:mysql://xxx:3306/ApolloPortalDB?characterEncoding=utf8 - spring_datasource_username=xxx - spring_datasource_password=xxx
執行命令:docker-compose up -d
而後訪問localhost:8080和localhost:8070便可
注意:
1. 若是是在mac環境下volumes的宿主機掛載路徑必須是/Users/用戶名/xxx,而不能是/xxx,若是將上述的volumes值改成以下將會報錯
volumes: - "/opt/logs/100003172:/opt/logs/100003172"
參考資料